• 素数打表法。


    打表法1【常规打表法】。

    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<math.h>
    #define N 100000
    bool p[N];
    int prim[N];
    
    void is_prim()
    {
         int i,j,n;
         for(i=1;i<=N;i++)
         p[i]=true;
         n=(int)sqrt(N);
         for(i=2;i<=n;i++)
         {
         for(j=i+i;j<=N;j+=i)
         {
            p[j]=false;
         }
         } 
         j=1;
         for(i=1;i<=N;i++)
         {
         if(p[i])
         {
           prim[j++]=i;
         }
         }
    }
    
    
    int main()
    {
        int i;
        is_prim();
        for(i=1;i<=1000;i++)
        printf("%d ",prim[i]);
        system("pause");
        return 0;
    }

    打表法2【压缩路径打表法】

    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    #include<iostream>
    using namespace std;
    int n;
    bool vis[10000000];
    int prim[10000000];
    
    void is_prim()
    {
         memset(vis,true,sizeof(vis));
         int num=0;
         for(int i=2;i<=n;i++)
         {
              if(vis[i]==true)
              {
                num++;
                prim[num]=i;
              }
              for(int j=1;((j<=num)&&(i*prim[j]<=n));j++)
              {
                vis[i*prim[j]]=false;
                if(i%prim[j]==0)
                break;
              }
         }
    }
    
    
    int main()
    {
        memset(prim,0,sizeof(prim));
        int cnt=0;
        scanf("%d",&n);
        is_prim();
        for(int i=0;i<=n;i++)
        if(prim[i])
        {
          printf("%d ",prim[i]);
          cnt++;
        }
        printf("
    ");
        system("pause");
    } 
    


  • 相关阅读:
    kvm添加磁盘
    python学习1
    ubuntu使sudo不需要密码
    磁盘挂载
    github/gitlab添加多个ssh key
    生成SSH key
    git 删除追踪状态
    angular2+ 初理解
    本地项目上传到GitHub
    new Date()之参数传递
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6930061.html
Copyright © 2020-2023  润新知