zoukankan      html  css  js  c++  java
  • 判断素数与产生素数表(质数)

    素数在小学数学也叫质数

    方法:所谓素数是指除了1和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被2~16的任一整数整除。因此判断一个整数m是否是素数,只需把m被2~m-1之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。

         另外判断方法还可以简化。m不必呗2~m-1之间的每一个整数去除,只需被2~√m之间的每一个整数去除就可以了。如果m不能被2~√m间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。

    C++程序如下:

    #include<iostream>
    #include<cmath> //引用了数学函数平方根:sqrt()
    using namespace std;

    bool isprime(int x)
    {
        if(x==0||x==1) return 0; //将特殊情况0和1单独拿出来进行
        for (int i=2;i<=sqrt(x)+0.5;i++) // 想想为何+0.5?因为假如sqrt(9)返回2.999999999,n=2,结果可就错了。
            if (x%i==0) return false;
        return true;
    }

    int main()
    {
        freopen("p.in","r",stdin);
        freopen("p.out","w",stdout); //习惯用文件输入与输出,不明白的可参与相关资料
        int x;
        cin>>x;
        cout<<isprime(x)<<endl; //0表示不是素数,非0表示是素数

    return 0;
    }

     在实际编程中,如果每个数都要判断是否是素数,采用上面的算法,时间复杂度会很大。这时就采用素数表,一下子就简化了时间复杂度。

    方法如下:筛法产生素数表

    实现程序如下:

  • 相关阅读:
    MVC MVP MVVM
    RC4 对称加密
    ARM 寻址方式
    杂项记录 arm64 的一些特性
    无向图-笔记-代码
    iOS 自定义导航栏
    ios中设置UIButton圆角,添加边框
    iOS 中UICollectionView实现各种视觉效果
    UIScrollView中UITableView
    iOS 13 适配总结
  • 原文地址:https://www.cnblogs.com/jjzzx/p/5063658.html
Copyright © 2011-2022 走看看