方法一:i去除以比他小的所有数,判断是否能够整除,如果都不能够整除,那就是素数。
#include<stdio.h>
int main()
{
int i=0, j=0,count=0;
for (i = 100; i <= 200; i++)
{
for (j = 2; j <= i ; j++)
{
if (i%j == 0)
{
break;
}
}
if (i == j)
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d\n", count);
return 0;
}
方法二:因为i=a*b,不论怎么样,a和b中至少有一个数小于i的平方,所以只需判断比i平方小的数是否能整除就可以。
#include<stdio.h>
#include<math.h> //引用了数学函数sqrt所以要调动数学函数
int main()
{
int i = 0, j = 0, count = 0;
for (i = 100; i <= 200; i++) //由于偶数不可能是素数。所以也可以把i++换成i+=2
{
for (j = 2; j <= sqrt(i); j++)
{
if (i%j == 0)
{
break;
}
}
if (j>sqrt(i))
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d\n", count);
return 0;
}
该题的最优解就是把i++换成i+=2,减少运算时间。