您的位置:首页 > 编程语言 > C语言/C++

1407251735-hd-美素数.cpp

2015-07-29 13:09 239 查看
#include<stdio.h>

int s1[1005000],s2[1005000];

//如果main该阵列外部函数中定义,全局变量的数组,自己主动初始化数组0;

//在main里面定义数组的话千万记得要初始化

int main()

{

int n,l,r;

int a,b,c,d,g=1;

//素数打表法

s1[0]=s1[1]=1;

for(a=0;a<1000000;a++)

{

if(s1[a])

continue;

for(b=a+a;b<1000000;b+=a)

s1[b]++;

}

d=0;

for(a=0;a<1000000;a++)

{

b=a;

c=0;

while(b)

{

c+=b%10;

b/=10;

}

if(s1[c]==0&&s1[a]==0)

d++;//d是美素数的个数

s2[a]=d;//s2【a】存的是从 0到 a之间美素数的个数

}

scanf("%d",&n);

//将数据写到外面。每次使用直接调用就好,这些数据仅仅计算了一次。所以省下了时间

while(n--)

{

scanf("%d%d",&l,&r);

printf("Case #%d: ",g);

g++;

printf("%d\n",s2[r]-s2[l-1]);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: