素数的定义是除了1和它本身,不能被其他数整除。最简单的方法就是把1和它自己之间的数全都遍历一遍。代码如下:
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
for (i = 100; i <= 200; i++)
{
for (j = 2; j < i; j++)
{
if (i%j == 0)
{
break;
}
}
if (i == j)
{
printf("%d\n", i);
}
}
system("pause");
return 0;
}
上述方法有个缺点就是效率太低,虽然说是短短几行代码看不出来效率,但若是在大型工程中,太耗费时间,接下来对它进行优化。求100到200之间的素数,可以把100到200之间的偶数全部排除,遍历的数据少了一半,效率就提高了二倍。代码如下:
int main(){
int i = 0;
int j = 0;
for (i = 101; i <= 200; i += 2)
{
for (j = 2; j < i; j++)
{
if (i%j == 0)
{
break;
}
}
if (i == j)
{
printf("%d\n", i);
}
}
system("pause");
return 0;
}
如果再要对其进行优化,可以思考一下下面的知识。
假如m=a*b 则a和b中至少有一个数字小于√m。举个栗子:m=4*4=2*8 2到√m中没有能被整除的,则√m到m中也没有。所以对其优化的代码如下:
int main()
{
int i = 0;
int j = 0;
for (i = 100; i <= 200; i++)
{
for (j = 2; j <=sqrt(i); j++)
{
if (i%j == 0)
{
break;
}
}
if (j > sqrt(i))
{
printf("%d\n", i);
}
}
system("pause");
return 0;
}