js方法求2-200之间素数的代码

用javascript技术输出2-200之间所有素数
2024-12-03 05:22:06
推荐回答(2个)
回答1:

以下代码可以实现JavaScript求n个素数,当n=500时满足题目需求。
function prime(n){
    var primeArr = [2];
    var isPrime = function(num, primeList){
        if(num == 2){
            return true;
        }
        for(var i = 3, iLen = Math.sqrt(num), j = 1; i <= iLen; i = primeList[j++]){
            if(num % i == 0){
                return false;
            }
        }
        return true;
    }
    if(isNaN(n) || n < 1){
        return [];
    }
    for(var i = 3,  i < n; i += 2){
        if(isPrime(i, primeArr)){
            primeArr.push(i);
 
        }
    }
    return primeArr;
}
prime(200)
 
//函数调用
prime(200);//计算200以内的素数:
素数即除去1和其本身两个数之外,不能被任何数整除的整数。
由公理可知,如果一个整数能被分解成多个整数,则必有一个数不大于该整数的平方根(反证法可知,如果分解成的两个数都大于平方根,则乘积必大于原数),故在循环时,只需循环到该数的平方根即(Math.sqrt(num)为求平方根)
如果一个数能被2整除,则除2之外其他数都不是素数,故从3开始遍历能够减少循环次数
如果一个数能够被分解,则最终分解结果必然为多个素数之积,故循环时只需要尝试之前算好的素数能否整除当前的数,极大减少循环次数

回答2:

function prime(start,end){
    function _isPrime(num){
        if(num==2){
            return true;
        }
        if(num%2==0){
            return false;
        }
        for(var i=3;i            if(num%i==0){
                return false;
            }
        }
        return true;
    }
    var primeNum = [];
    for(var i=start;i<=end;i++){
        if(_isPrime(i)){
            primeNum.push(i);
        }
    }
    return primeNum.join(',');
}
var result = prime(2,200);
alert('2~200之间共有素数'+result.split(',').length+'个,它们是:\n'+result);