求100-200之间的素数

素数定义:一个大于1的正整数,除了1和它本身以外,不能被其他正整数整除。

解题思路:先找出100-200之内所有的整数。让这个整数对除去1和它本身的数字取余,若余数为0,则不是素数。反之为素数。

#include
#include

int IsPrime(int x)
{
	int i = 2;
	for (; i <= x ; i++){
		if (x%i == 0){
			return 0;
		}
		else{
			return 1;
		}
	}
}
int main()
{
	int i = 100;
	for (i = 100; i <= 200; i++){
		if (IsPrime(i) == 1){
			printf("%d ", i);
		}
	}
	system("pause");
	return 0;
}

结果如下:
求100-200之间的素数_第1张图片
我们再想,一个数若不是素数,那它至少能整出2,我们按这个思路往下走,那是不是k++加到i/2的时候就不用再往下判断了呢?我们试着看一看:

修改部分:
int IsPrime(int x)
{
	int i = 2;
	for (; i <= x/2; i++){    //只需试到x/2
		if (x%i == 0){
			return 0;
		}
		else{
			return 1;
		}
	}
}

结果和第一次一样:
在这里插入图片描述
Ok,我们来看另一种方法。
比如说我们要判断的这个数字x=ab,且a 例:100=1010,要证明100不是素数,我们只用尝试1—10,到10就可以证明它不是素数了,我们试试看:

修改部分:
#include
#include
#include     //注意引入#include头文件,才能完成开平方语句

int IsPrime(int x)
{
	int i = 2;
	int top = sqrt(x);       //对x开根号
	for (; i <= top ; i++){     //试到√x
		if (x%i == 0){
			return 0;
		}
		else{
			return 1;
		}
	}
}

结果当然还是一样的:
在这里插入图片描述
我们说了这三种方法,显而易见,第三种是尝试的数字最少的程序。我们知道,一个程序的好与坏不仅表现在可读性,也表现在他的效率,运行次数和所占空间大小等中,所以,我们要尽可能的优化程序,使它的效率最高,运行次数最少,所占空间最小。无论在哪方面,我相信,一个完美的程序正是我们所有人所追求的!

你可能感兴趣的:(C语言)