打印100-200的素数
#include <stdio.h>
int main()
{
int i = 0;
int count =0;
for(i=100;i<=200;i++)
{
//判断i是不是素数
//素数判断的规则
//1.试除法
//13 2-12
//产生2->i-1
int j=0;
for(j=2;j<i;j++)
{
if(i%j==0)
{
break;
}
}
if(j==i)
{
count++;
printf("%d ",i);
}
}
printf("\ncount = %d\n",count);
return 0;
}
对于上面的方法,从1到n尝试,效率太慢,可以采取下面的优化方法
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0;
int count =0;
for(i=100;i<=200;i++)
{
//判断i是不是素数
//素数判断的规则
//1.试除法
//13 2-12
//产生2->i-1
int j=0;
for(j=2;j<=sqrt(i*1.0);j++)//用pow(i,0.5)可以
{
if(i%j==0)
{
break;
}
}
if(j>sqrt(i*1.0))
{
count++;
printf("%d ",i);
}
}
printf("\ncount = %d\n",count);
return 0;
}
进一步的优化偶数问题
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0;
int count =0;
for(i=101;i<=200;i+=2)//偶数不可能
{
int j=0;
for(j=2;j<=sqrt(i*1.0);j++)
{
if(i%j==0)
{
break;
}
}
if(j>sqrt(i*1.0))
{
count++;
printf("%d ",i);
}
}
printf("\ncount = %d\n",count);
return 0;
}