zoukankan      html  css  js  c++  java
  • 判断素数的方法

    判断素数的方法

    判断素数的方法有三种,常规法,埃式筛法,欧拉筛法。

    1.常规方法

    void normal(int m)
    {
         bool is = 0;
         if(m==1||m==0)
         {
             cout << m << "不是素数";
         }
         else{
             for (int i = 2; i <= sqrt(m);i++)
             {
                 if(m%i==0)
                 {
                     is = 1;
                     break;
                 }
             }
         }
         if(is==0)
             cout << m << "是素数";
             else
                 cout << m << "不是素数";
    }
    

    2.埃式筛法(O(nlogn))

    void Ais(int m)////埃式筛法
    {
        memset(prime, 0, sizeof(prime));
        memset(vis, 0, sizeof(vis));
        prime[0] = prime[1] = 1;
        for (int i = 2; i <= m;i++)
        {
            if(!prime[i])
            {
                for (int j = i * 2; j <= m;j+=i)
                {
                    prime[j] = 1;
                }
            }
    
        }
    }
    

    3.欧拉筛法(O(n))

    void OLA(int m)//欧拉筛法
    {
        int ans = 0;
        memset(prime, 0, sizeof(prime));
        memset(vis, 0, sizeof(vis));
        for (int i = 2; i <= m; i++)
        {
                if(!vis[i])
                {
                    prime[ans++] = i;
                }
                for (int j = 0; j < ans;j++)
                {
                    if(i*prime[j]>m)
                        break;
                    vis[i * prime[j]] = 1;
                    if(i%prime[j]==0)
                        break;
                }
        }
    }
    
  • 相关阅读:
    A. k-rounding
    哗啦啦村的刁难(4)
    喵哈哈村的种花魔法
    喵哈哈村的赛马比赛
    喵哈哈村的括号序列
    喵哈哈村的排队
    python中递归调用
    python-中函数的参数
    shell中参数及带色彩打印
    python-文件读写
  • 原文地址:https://www.cnblogs.com/a821403286/p/13693386.html
Copyright © 2011-2022 走看看