寻找素数的算法有很多,最著名应是筛选法,以下是笔者用JavaScript编写的一个找素数的函数,借鉴了各种找素数的算法,聊为纪念。
function findNums(num){
//确保获得的素数集的最大数为奇数
var max = 2 * Math.floor(num/2) + 1;
//原有素数集只有2,3是素数集中最小奇数
var collections = [2],temp = 3;
do{
/*假设temp是素数,用之前搜集的素数集去检验它,因合数因子总成对出现,
故素数因子应小于temp的平方根*/
var isIt = true,leng = Math.sqrt(temp);
for(var i = 0;collections[i] <= leng;i++){
//能被整除,不是素数,跳出循环
if(temp % collections[i] == 0){
isIt = false;
break;
}
//现有素数集皆不能整除之,加入到现有素数集
if(isIt){
collections.push(temp);
}
}
temp += 2;
}while(temp < max);
//返回素数集
return collections;
}