这个题要注意啦 1 在这个题中也是素数。 唉 害我苦苦找了这么久 后来人注意就行了
#include <stdio.h>
#define num 100010
long long mark[num+10]={0},visit[num+10]={1},t=0,rec[num+10];
int main()
{
for(long long i=2;i<=num;i++)
{
if(!visit[i])
mark[t++]=i;
for(long long j=0;j<t&&i*mark[j]<=num;j++)
{
visit[i*mark[j]]=1;
if(i%mark[j]==0)
break;
}
}
long long sum=0;
for(long long i=0;i<=num;i++)
{
if(!visit[i])
sum++;
rec[i]=sum;
}
long long n,m,t=1,temp;
while(~scanf("%lld %lld",&m,&n))
{
printf("Case %%%lld:%lld\n",t++,rec[n]-rec[m-1]);
}
return 0;
}#include <stdio.h>
#include <math.h>
#define num 100005
int main()
{
int flag[num],rec[num],sum=0,cnt=0,m,n;
flag[0]=1;
for(int i=2;i<=num/2;i++)
if(!flag[i]&&i<=sqrt(num))
for(int j=i*i;j<=num;j+=i)
flag[j]=1;
for(int i=0;i<=num-5;i++){
if(!flag[i])
sum++;
rec[i]=sum;
}
while(scanf("%d %d",&m,&n)!=EOF)
printf("Case %%%d:%d\n", ++cnt,rec[n]-rec[m-1]);
}原文地址:http://blog.csdn.net/su20145104009/article/details/45338031