美文网首页
Js关于质数的判定

Js关于质数的判定

作者: ymyt92 | 来源:发表于2019-01-24 11:21 被阅读0次

质数的定义

质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。大于1的自然数若不是素数,则称之为合数(也称为合成数)。

Js判定

验证是否为大于1 的自然数

function validate (num) {
    return /^\d+$/.test (num) && num > 1
}

方法一: 根据质数定义判定

function isPrime(num) {
    if (validate(num)) {
        for (let i = 2; i < num; i++) {
            if (num % i == 0) {
                return false
            }
        }
        return true
    }
    return false
}

方法二: 通过合数判定
方法一直观明了,但是运算量过大。通过定义可知大于1的自然数不是质数就是合数,因此可以通过判断合数来进行优化。

假设num是个合数,它必然是两数之积,即num = a*b,且a,b均为不为1的正整数,a,b要么一大一小,要么相等。当a为最小值2时,b有最大值,即合数的最大因数为num/2,最小因数为2。换句话说一个数在2到num/2之间范围内有因数为合数,没因数为素数。

function isPrime(num) {
    if (validate(num)) {
        for (let i = 2; i <= num/2; i++) {
            if (num % i == 0) {
                return false
            }
        }
        return true
    }
    return false
}

上面的方式是通过最大因数判断,还可以继续优化减少运算。
合数num为它的两个平方根之积,即num = \sqrt{num} * \sqrt{num},num=a*b,当a,b不相等时,一个大于\sqrt{num},一个小于\sqrt{num},即合数num较小的因数范围为2到\sqrt{num}之间。

function isPrime(num) {
    if (validate(num)) {
        for (let i = 2; i <= Math.sqrt(num); i++) {
            if (num % i == 0) {
                return false
            }
        }
        return true
    }
    return false
}

相关文章

  • Js关于质数的判定

    质数的定义 质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数...

  • 关于质数的判定方法

    质数的定义:如果一个数只能被1和它本身整除,那么他就是质数 对于找质因数的方法 方式1 对于一个合数来说;它必然能...

  • 18-04-18:python3 质数(素数)判定

    初稿时间:04-18定稿时间:推敲过程请点击 质数判定 对于一个给定的正整数N,如何判定其为质数(合数)? 2到R...

  • leetcode初级之数学

    1. 计数质数 统计所有小于非负整数 n 的质数的数量。 1.1 迭代法 解题思路:数学问题,用到了两个质数判定性...

  • 质数刷题

    质数距离如何快速求解一个区间的所有质数。阶乘分解快速对整个阶乘质因数分解。判定1e18的质数直接使用Miller-...

  • 质因数分解-试除法

    算数基本定理任何一个大于1的正整数都能被唯一分解为有限个质数的乘积。其中是正整数,是质数,且满足试除法结合质数判定...

  • JS求质数

  • 关于判定

    或许我写过太多太过悲观的文字,最终会被删除掉,我的困境不是感性上的自我束缚,或者是找不到情感的支点,我的困境是理性...

  • Linux脚本基础之if [-d -e -f]等参数

    1、if参数之关于文件判定 2、if参数之关于整型变量判定 3、if参数值关于字符串变量表达式判定 4、if 之与或非

  • JS基础 -- 质数练习

    /** 在页面中接受一个用户输入的数字,并判断概述是否是质数。* 质数:只能被1和它自身整除的数,1不是质数也不是...

网友评论

      本文标题:Js关于质数的判定

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