统计区间素数数量

 1 #pragma GCC optimize(2)
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4 bool isprime[1000000010];
 5 vector<int> prime;
 6 inline int getlist(int n,int m){
 7     isprime[1]=1;
 8     int ans=0;
 9     for(int i=2;i<=m;i++){
10         if(!isprime[i]){
11             prime.push_back(i);
12         }
13         if(!(i^(n-1))){
14             ans=prime.size();
15         }
16         for(int j=0;j<prime.size()&&i*prime[j]<=m;j++){
17             isprime[i*prime[j]]=1;
18             if(!(i%prime[j])){
19                 break;
20             }
21         }
22     }
23     return ans;
24 }
25 int main(){
26     int m,n;
27     cin>>n>>m;
28     int ans=getlist(n,m);
29     int ans1=prime.size();
30     cout<<ans1-ans<<endl;
31     system("pause");
32     return 0;
33 }

 

 

 

是目前网上极快的版本

采用欧拉筛.

由于用了STL所以建议吸氧

可以直接使用,由于我太蒻了,有不好的请直说

 

posted @ 2020-08-27 20:49  甜菜根  阅读(157)  评论(0编辑  收藏  举报