欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

求素数表

程序员文章站 2024-03-21 15:02:16
...

求素数表

#include<cstdio>
bool vis[100010] = { 0 };
int prime[100010] = { 0 };

int isprime(int n) {
    /*
    欧拉筛选素数。
    筛选n(包括n)以内的素数,返回素数个数。
    时间复杂度:O(n)。
    */
    int cnt = 0;
    for (int i = 2;i <= n;++i) {
        if (!vis[i]) {
            prime[cnt++] = i;
        }
        for (int j = 0;j < cnt&&i*prime[j] <= n;++j) {
            vis[i*prime[j]] = 1;
            if (i%prime[j] == 0)break;
        }
    }
    return cnt;
}

int main(){
    int N,cnt=0;
    scanf("%d",&N);
    isprime(N);
    for(int i=0;i<=N;++i){
        if(vis[i]!=0){
            printf("%d ",i);
            cnt++;
        }
        if(cnt==5){
            cnt=0;
            printf("\n");
        }

    }
    return 0;
}
相关标签: 素数