素数算法

寻找素数的算法有很多,最著名应是筛选法,以下是笔者用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;
}

你可能感兴趣的:(素数算法)