EOJ【1006】Prime 和素数有关的水题

来源:互联网 发布:anyview java 编辑:程序博客网 时间:2024/05/01 23:51

此题用最朴素的判断素数法,超时没商量,必须超。本菜无奈,在网上发现了筛法求素数,借鉴了一下,现贴出代码留念

#include<iostream>#include<cmath>#define n 1000000using namespace std;bool* isPrimes = new bool[1000001];void FilterPrime(){long count=0;for(int i=2;i<=n;++i)isPrimes[i] = true;isPrimes[2] = true;for(int j=2;j<=n;++j){if(isPrimes[j]==true)for(int m=2;j*m<=n;++m)isPrimes[j*m] = false;}}int main(){    int a,b,i,sum;    FilterPrime();    while(cin>>a>>b){       sum=0;       for(i=a;i<=b;i++)        if(isPrimes[i])         sum++;       cout<<sum<<endl;    }}

FilterPrime()即为埃拉托斯特尼筛法。
筛法部分的代码转自:http://www.cnblogs.com/kingwolfofsky/archive/2012/01/13/2322061.html

原创粉丝点击