codevs 6116 区间素数

 时间限制: 8 s
 空间限制: 256000 KB
 题目等级 : 白银 Silver
 
 
 
题目描述 Description

小明喜欢研究素数,他想统计两个自然数之间的素数个数,现在他给定一个区间,请你帮忙求出这个区间的素数个数。

输入描述 Input Description

两个数a和b,表示开区间[a,b]

 

输出描述 Output Description

输出一个数,表示区间素数的个数

样例输入 Sample Input

2 100

样例输出 Sample Output

25

数据范围及提示 Data Size & Hint

 

没讲清数据范围,被坑了一次。。

屠龙宝刀点击就送

#include <cstdio>
int n,m,num,ans,Prime[50000005];
bool isPrime[50000005];
int main()
{
    scanf("%d%d",&n,&m);
    isPrime[0]=isPrime[1]=1;
    for(int i=2;i<=m;i++)
    {
        if(!isPrime[i]) Prime[num++]=i;
        for(int j=0;j<num&&i*Prime[j]<=m;j++)
        {
            isPrime[i*Prime[j]]=1;
            if(i%Prime[j]==0) break;
        }
    }
    for(int i=n;i<=m;i++) if(!isPrime[i]) ans++;
    printf("%d",ans);
    return 0;
}

 

posted @ 2017-07-13 16:48  杀猪状元  阅读(181)  评论(0编辑  收藏  举报