美文网首页
数学问题:判断一个数是否是质数(素数)

数学问题:判断一个数是否是质数(素数)

作者: wayyyy | 来源:发表于2024-02-13 00:35 被阅读0次

质数的定义:质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。比如2是质数,3是质数,4不是质数。

试除法
bool IsPrimeNumber(int n)
{
    if (n < 2)
        return false;

    for (int i = 2; i < n; i++)
    {
        if (n % i == 0)
            return false;
    }

    return true;
}

但是仍然有优化的空间,假设 n 是合数,那么即存在正整数 f1 和 正整数 f2 满足:
f1*f2 = n
f1 ≤ f2,则有:

  1. f1=f2=sqrt(n)(表示n的算术平方根)
  2. f1<sqrt(n)<f2

如果存在大于 n 的算术平方根的正整数 f2 能整除 n ,那么一定存在小于 n 的算术平方根的正整数 f1 能整除 n,且f1×f2=n(假设 f1 和 f2 都大于1小于 n )。该命题的逆否命题同样成立。因此只需要遍历到 sqrt(n)即可,如果遍历到 sqrt(n) 仍未发现能整除n的数,则n是质数。

bool IsPrimeNumber(int n)
{
    if (n < 2)
        return false;
    int  topLimit  =  sqrt(n);
    for (int i = 2; i <= topLimit; i++)
    {
        if (n % i == 0)
            return false;
    }
     
    return true;
}

相关文章

  • 素数(质数)筛选法模板

    判断一个数是否为质数 素数筛选法(时间复杂度O(nlogn))

  • 204. Count Primes - swift

    描述: 计算小于非负数整数n的质数(素数)个数 什么是质数(素数): 质数(prime number)又称素数,有...

  • 关于正整数、质数与公因数及哥德巴赫猜想

    前言: 编程实现: 功能:1.得到一个数的所有公因数2.判断一个数是否是素数(质数)3.取到范围内的所有素数4.给...

  • 《Python高性能编程》札记1_判断质数

    判断一个数是否为质数:

  • 2019-09-03

    判断一个数是否是质数 求出1-100 范围内的质数

  • 判断一个整数是否为素数

    问题:给定一个正整数,如何判断它是否为素数?   素数,又称之为质数,是指在大于1的自然数中,除了1和它本身以外不...

  • Java常见算法整理

    兔子问题(斐波那契数列规律) 台阶问题 (兔子问题变种,递归规律) 素数问题(判断素数、质数方式) 水仙花数问题(...

  • 如何快速的判断一个数是否是质数?

    任意的一个数,你如何能判断它是否是质数呢?我们学过的235的倍数的特点,就该想到如何判断一个数是否是质数 只要是2...

  • 素数筛法——1. 素数判定

    素数判定问题 题目描述 给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。 输入描述: 测试数据有多组...

  • 质数问题

    问题 请判断101-200之间有多少个素数,且输出所有的素数。 问题分析 素数(质数)在大于1的自然数中,除了1和...

网友评论

      本文标题:数学问题:判断一个数是否是质数(素数)

      本文链接:https://www.haomeiwen.com/subject/msuxmqtx.html