首页 > 教育 正文

如何判断质数 c语言如何判断质数

时间:2023-11-13 作者:佚名

质数是指除1和本身以外不能被其它自然数整除的数。质数在密码学、数学、物理等领域有着广泛的应用。那么,如何判断一个数是不是质数呢?以下是几种常见的判断方法:

1、试除法:

试除法是最简单的一种判断质数的方法。即对于一个自然数n,从2到n-1枚举每个数,看是否能整除n。


bool isPrime(int n)
{
    if (n <= 1) return false; //质数定义,小于等于1的数不能是质数
    for (int i = 2; i * i <= n; i++)
        if (n % i == 0) return false;
    return true;
}

2、试除法优化(适用于大一些的数):

显然,我们只需要枚举到sqrt(n)就可以了,因为,如果有因子a * b=n,则一定有一个数小于等于sqrt(n)。


bool isPrime(int n)
{
    if (n <= 1) return false;
    int sqr = (int)sqrt(n);  //计算sqrt(n)
    for (int i = 2; i <= sqr; i++)
        if (n % i == 0) return false;
    return true;
}

3、线性筛法:

线性筛法是比较高效的一种判断质数的方法。

假设有一个自然数n,将从2到n枚举每个数,如果当前枚举的数字x是质数,那么将x的倍数标记为合数。


const int MAXN = 1000010;
int prime[MAXN], pNum = 0;  //prime[]存储所有素数,pNum是素数个数
bool p[MAXN] = { false };   //p[i] == true表示i是合数

void findPrime(int n)  //线性筛法求素数
{
    for (int i = 2; i <= n; i++)
    {
        if (p[i] == false)
        {
            prime[pNum++] = i;
            for (int j = i + i; j <= n; j += i)
                p[j] = true;
        }
    }
}

ps:线性筛法的优化可以查看符志凯老师的文献。

以上就是几种常见的判断质数的方法。对于小范围的数据可以直接使用试除法,而线性筛法适合不要求连续判断的多次询问。在实际应用中,根据具体情况选择使用方法才是最好的方式。

本文信息为网友自行发布旨在分享与大家阅读学习,文中的观点和立场与本站无关,如对文中内容有异议请联系处理。

本文链接:https://www.paituo.cc/study/1230506.html

  • 小编推荐

    古代县衙是很常见的

    古代县衙是很常见的,简介如下今天有趣史小编给大家带来古代县衙,感兴趣的读者可以跟着小编一起看一看。秦朝建立之后,古代就进入了封建王朝,从此之后,封建王朝一直持续到了清朝。不可否认的是,秦始...

    鹤壁一日游景点自驾游

    本文讲述鹤壁一日游景点自驾游,简介如下本文是小编为鹤壁一日游景点自驾游撰写,主要解答关于鹤壁一日游景点自驾游的相关疑惑,以下是正文。鹤壁一日自驾游景点推荐有:1.云梦山,2.古灵山,3.鹤壁金山寺,...

    杭州七夕情人节有什么活动杭州七夕去哪玩

    本文讲述杭州七夕情人节有什么活动杭州七夕去哪玩,简介如下本文是小编为杭州七夕情人节有什么活动杭州七夕去哪玩撰写,主要解答关于杭州七夕情人节有什么活动杭州七夕去哪玩的相关疑惑,以下是正文。七夕情人节每个城市相信都是会有...

    你也是做金鼎手工活的吧大家都是被骗了

    本文讲述你也是做金鼎手工活的吧大家都是被骗了,简介如下本文是小编为你也是做金鼎手工活的吧大家都是被骗了撰写,主要解答关于你也是做金鼎手工活的吧大家都是被骗了的相关疑惑,以下是正文。手工活被骗北京轩文公司是骗子公司骗...

    中国平安保险

    本文讲述中国平安保险,简介如下本文是小编为中国平安保险撰写,主要解答关于中国平安保险的相关疑惑,以下是正文。中国平安保险的世纪赢家怎么样?  平安世纪赢家终身寿险(万能型)的产品理念  帮助...

    爽字部首是什么再查几画

    本文讲述爽字部首是什么再查几画,简介如下本文是小编为爽字部首是什么再查几画撰写,主要解答关于爽字部首是什么再查几画的相关疑惑,以下是正文。“爽”字用部首查字法,应先查什么部再查几画?“爽”字用部首查字...

    谈恋爱时该不该因为细节否定对方

    本文讲述谈恋爱时该不该因为细节否定对方,简介如下本文是小编为谈恋爱时该不该因为细节否定对方撰写,主要解答关于谈恋爱时该不该因为细节否定对方的相关疑惑,以下是正文。谈恋爱过程中,双方该不该考验彼此的真心?当局者...

    江山如有待

    本文讲述江山如有待,简介如下本文是小编为江山如有待撰写,主要解答关于江山如有待的相关疑惑,以下是正文。“江山如有待,花柳更无私”是什么意思?“江山如有待,花柳更无私”的意思是:这大好的江山...