欧拉筛法模板代码
Posted leftstan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了欧拉筛法模板代码相关的知识,希望对你有一定的参考价值。
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #define MAXN 100000 using namespace std; int pri[MAXN];///质数数列 bool vis[MAXN];///访问标志,也可记录最小素因子 int cnt = 0;///质数个数 void euler_sieve() { memset(pri, 0, sizeof(pri)); memset(vis, false, sizeof(vis)); //vis[0] = vis[1] = false; //pri[1] = pri[2] = 1; for(int i = 2; i < MAXN; i++) { if(!vis[i])pri[cnt++] = i; cout<<"prime"<<cnt<<":"<<pri[cnt-1]<<endl; for(int j = 0; j < cnt && i * pri[j] < MAXN; j++) { //ecout<<i*pri[j]<<endl; vis[i*pri[j]] = true; if(!(i%pri[j]))break; } } } int main() { int n; while(~scanf("%d", &n)) { euler_sieve(); for(int i = 0; i < cnt; i++)cout<<pri[i]<<endl; } return 0; }
以上是关于欧拉筛法模板代码的主要内容,如果未能解决你的问题,请参考以下文章