用标准C编程:找出整形数字1-100之间的素数,并打印出来(素数:除了1和自己本身可以被整除)
#include<stdio.h>
#include<math.h>
void main()
{
int i,k,flag;
for(i=1;i<101;i++)
{
flag=1;
for(k=2;k<i-1;k++)
{
if(i%k==0)
{
flag=0;
break;
}
}
if(flag==1)
{
printf("%d\n",i);
}
}
}
优化后–减少循环次数
#include<stdio.h>
#include<math.h>
void main()
{
int m,i,k,flag;
for(m=1;m<101;m=m+2)
{
k=sqrt(m);
flag=1;
for(i=2;i<=k;i++)
if(m%i==0)
{
flag=0;
break;
}
if(flag==1)
{
printf("%d\n",m);
}
}
}
优化原则:在优化的程序中并没有用2到100之间的数去除m,而是只用2到sqrt(m)之间的数去除m,这是因为假如m不是素数,则必然有因子存在2到sqrt(m)之间。