JavaScript常见面试题——打印质数

质数

只有两个正因数(1和自己)的自然数即为质数。1和0非质数也非合数。

JavaScript代码

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

for(let i = 1; i <= 10000; i++){
    isPrime(i) && console.log(i);
}

小结

重点在于求解数N是否未质数:基本的思路是设置变量i从2开始,只要N%i的结果为0,该数必然不是质数。
但是换个思路想,如果一个数不是质数,则必然有2个正因数(非1和本身),那么这两个数(设为x和y)正常情况下应该一小一大,极端情况下x=y,因此我们只要判断到N的开方即可,如果i从2到N的开方都无法被除尽,那么也就不存在更大的数可以被除尽了,因此该数一定是质数。

你可能感兴趣的:(JavaScript常见面试题——打印质数)