• 素数筛


    1 O(n*logn) 同时生成素数表

    const int maxn=30000+5;
    const int maxm=1000000+5;
    int prime[maxn],ptot;
    bool isprime[maxn];
    void marktable(int n){
        memset(isprime,0,sizeof(isprime));
        ptot=0;isprime[1]=1;
        for(int i=2;i<=n;i++){
            if(!isprime[i]) {
                prime[ptot++]=i;
                for(int j=i*i;j<=n;j+=i)
                isprime[j]=true;
            }
        }
        //for(int i=0;i<ptot;i++) cout<<prime[i]<<endl;
    }

    2 O(n)同时生成素数表

    const int maxn=30000+5;
    const int maxm=1000000+5;
    int prime[maxn],ptot;
    bool isprime[maxn];
    void marktable(int n){
        memset(isprime,0,sizeof(isprime));
        ptot=0;isprime[1]=1;
        for(int i=2;i<=n;i++){
            if(!isprime[i]) prime[ptot++]=i;
            for(int j=0;j<ptot;j++){
                if(i*prime[j]>n) break;
                isprime[i*prime[j]]=true;
                if(i%prime[j]==0) break;
            }
        }
        //for(int i=0;i<ptot;i++) cout<<prime[i]<<endl;
    }

     3 只生成素数筛

    const int maxn=30000+5;
    
    int prime[maxn];
    void marktable(int n){
        memset(prime,0,sizeof(prime));
        for(int i=2;i<=n;i++){
            if(!prime[i]) prime[++prime[0]]=i;
            for(int j=1;j<=prime[0]&&prime[j]<=n/i;j++){
                prime[prime[j]*i]=1;
                if(i%prime[j]==0) break;
            }
        }
    }
  • 相关阅读:
    分组排序并显示序号
    power-design--tables-export-usage
    cache implement
    get system properties
    jbpm
    JVM内存管理机制和垃圾回收机制
    java读取excel
    Java编程中“为了性能”尽量要做到的一些地方
    json串与java对象互转
    apidoc的使用
  • 原文地址:https://www.cnblogs.com/033000-/p/10088598.html
Copyright © 2020-2023  润新知