素数
求100-200的素数
#include <stdio.h>
#include <math.h>
int main()
{
int i;
int count =0;
for(i=100;i<200;i++)
{
int j=0;
int flag =1;
for(j=2;j<i;j++)
{
if(i%j==0)
{
flag =0;
break;
}
}
if(flag==1)
{
count++;
printf("%d ", i);
}
}
printf("\ncount = %d\n",count);
return 0;
}
代码优化方案
//m = a*b
//a b中一定至少有一个数是 <= sqrt(m)的
//例如:i = 16= 2*8 = 4*4
//如果在4或以前有能被16整除的数说明16不是素数,
//对于4之后的数进行试除操作多余
//所以:
for(j=2;j<i;j++)//替换为
for(j=2;j<=sqrt(i);j++)
//这时计算机进行的操作减少 代码得到优化
代码其实还可以优化
//由于偶数都是素数
//所以
for(i=100;i<200;i++)
//改为
for(i=101;i<200;i+=2)
//从源头上优化代码