zoukankan      html  css  js  c++  java
  • 埃式筛法

    例:素数的个数

    题意:给定整数n。请问n以内有多少个素数  (n <= 10的6次幂)

    输入:

    11

    1000000

    输出:

    5

    78498

    #include <cstdio>
    using namespace std;
    
    const int maxn = 1000000 + 10;
    int prime[maxn];     //第i个素数
    bool is_prime[maxn];    //is_prime[i]为true表示i是素数
    
    //返回n以内的素数的个数
    int sieve(int n)
    {
        int p = 0;
        for (int i = 0; i <= n; i++)
            is_prime[i] = true;
        is_prime[0] = is_prime[1] = false;
        for (int i = 2; i <= n; i++){
            if (is_prime[i]){
                prime[p++] = i;
                for (int j = 2 * i; j <= n; j += i)
                    is_prime[j] = false;
            }
        }
        return p;
    }
    
    int main()
    {
        int n;
        while (scanf("%d", &n) != EOF){
            printf("%d
    ", sieve(n));
        }
        return 0;
    }
    


  • 相关阅读:
    Gym
    博客搬家
    UVA
    UVA
    UVA
    UVA
    UVA
    UVA1589——xiangqi
    SDUSToj第十一次作业源代码格式问题
    【成长之路】【python】python基础3
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7169555.html
Copyright © 2011-2022 走看看