码迷,mamicode.com
首页 > 其他好文 > 详细

欧拉筛法模板代码

时间:2020-11-08 17:07:41      阅读:13      评论:0      收藏:0      [点我收藏+]

标签:std   amp   欧拉筛法   include   end   mem   iostream   ems   string   

 

#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;
}

  

 

欧拉筛法模板代码

标签:std   amp   欧拉筛法   include   end   mem   iostream   ems   string   

原文地址:https://www.cnblogs.com/leftstan/p/13845119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!