zoukankan      html  css  js  c++  java
  • 素数线性筛模板

    埃拉托斯特尼筛法(The sieve of Eratosthenes)

    https://www.luogu.com.cn/problem/P3912

    //只算出来了素数的个数
    #include <cstdio>
    const int N = 100000010;
    bool isNotPrime[N];
    int cnt;
    int main() {
        int n;
        scanf("%d", &n);
        for (int i = 2; i * i <= n; i++)
            if (!isNotPrime[i])
                for (int j = i * i; j <= n; j += i)
                    isNotPrime[j] = true;
        for (int i = 2; i <= n; i++)
            if (!isNotPrime[i]) cnt++;
        printf("%d
    ", cnt);
        return 0;
    }
    

    欧拉筛法(The sieve of Euler)

    证明

    https://www.luogu.com.cn/problem/P3383

    #include <cstdio>
    const int N = 100000010;
    bool isNotPrime[N];
    int cnt, prime[N];
    void table(int n) {
        for (int i = 2; i <= n; i++) {
            if (!isNotPrime[i]) prime[++cnt] = i;
            for (int j = 1; i * prime[j] <= n; j++) {
                isNotPrime[i * prime[j]] = true; //当prime[j]为某合数的最小质因数时,筛掉该合数
                if (i % prime[j] == 0) break; //保证每一个合数只被筛掉一次
            }
        }
    }
    int main() { 
        int n, q;
        scanf("%d%d", &n, &q);
        table(n);
        int c;
        while (q--) {
            scanf("%d", &c);
            printf("%d
    ", prime[c]);
        }
        return 0;
    }
    
    本人菜鸡一枚!
    如有错误还请大佬们多多指教!
  • 相关阅读:
    使用Python往手机发送短信(基于twilio模块)
    春&风
    故乡
    非常完美
    风 记忆
    风誓
    MATLAB的循环结构
    你要的快乐
    夕颜
    MATLAB的基本元素
  • 原文地址:https://www.cnblogs.com/watchphone/p/12336525.html
Copyright © 2011-2022 走看看