uva 11105 Semi-Prime H-number 筛法
2016-11-08 15:56
357 查看
<pre name="code" class="html">点击打开链接
</pre><pre code_snippet_id="1973199" snippet_file_name="blog_20161108_4_7065142" name="code" class="cpp">
</pre><pre code_snippet_id="1973199" snippet_file_name="blog_20161108_5_2746744" name="code" class="cpp">#include <iostream> #include <cstring> #include <cstdio> #include <vector> #include <map> using namespace std; typedef long long ll; const int N=1e6+1; const ll inf=1<<30; vector<int> h; int vis ; ll pri ; int main() { int n; memset(vis,0,sizeof(vis)); for(int i=0;4*i+1<=N;i++) { h.push_back(i*4+1); } vis[h[0]]=1; int pn=0; for(int i=1;i<h.size();i++)//晒出h素数 { if(!vis[h[i]]) { pri[pn++]=h[i]; for(int j=h[i]+h[i];j<=N;j+=h[i]) { vis[j]=1;//H素数只能写成1*h 素数的倍数不是素数 } } } while(cin>>n&&n) { memset(vis,0,sizeof(vis)); ll ans=0; // 1e4 cout<<pn<<endl; //筛出H素数后 定义Semi-prime为两个H素数乘积 暴力即可 for(int i=0;i<pn;i++) { if(pri[i]*pri[i]>n) //n<=1e6 break; for(int j=i;j<pn;j++) { int mul=pri[i]*pri[j]; if(mul<=n) { if(!vis[mul]) { vis[mul]=1; ans++; } } else break; } } cout<<n<<' '<<ans<<endl; } return 0; }
相关文章推荐
- POJ3292 UVA11105 Semi-prime H-numbers【筛法打表】
- UVa 11105 (筛法) Semi-prime H-numbers
- UVA 11105 - Semi-prime H-numbers(数论)
- UVA11005 Semi-prime H-numbers(筛法)
- uva 11105——Semi-prime H-numbers
- UVa11105 - Semi-prime H-numbers(sieve的思想)
- 11105 - Semi-prime H-numbers(筛法)
- UVa 11105 - Semi-prime H-numbers(筛选法)
- UVA 11105(p345)----Semi-prime H-numbers
- UVA - 11105 - Semi-prime H-numbers(筛选法)
- Semi-prime H-numbers UVA - 11105 区间筛
- uva 11105 - Semi-prime H-numbers(数论)
- UVA 11105 Semi-prime H-numbers
- UVa 11105 - Semi-prime H-numbers
- POJ_3292_Semi-prime H number_筛法
- Prime Gap UVA - 1644——筛法建素数表
- UVa1210 - Sum of Consecutive Prime Numbers(欧拉筛法即线性筛法)
- 数学专项number_theory:UVa 11105
- UVa 1644 - Prime Gap(筛法选素数)
- POJ 3292 Semi-prime H-numbers (变形埃氏筛法)