您的位置:首页 > 其它

优化后的 求素数

2013-03-11 23:30 127 查看
View Code

#include <stdio.h>
#include<math.h>
int prime[1000000];
int main()
{
int s,max;
while(scanf("%d",&max)!=EOF&&max!=0)
{
s=0;
prime[0]=prime[1]=0;prime[2]=1;
for(int i=3;i<max;i++)
prime[i]=i%2==0?0:1;
int t=(int)sqrt(max*1.0);
for(int i=3;i<=t;i++)
if(prime[i])
for(int j=i*2;j<max;j+=i)
prime[j]=0;
for(int i=2;i<=max;i++)
if(prime[i]==1)
s++;
printf("%d\n",s);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: