首頁 >web前端 >js教程 >JavaScript求指定範圍內的質數的實作程式碼分享

JavaScript求指定範圍內的質數的實作程式碼分享

黄舟
黄舟原創
2017-03-18 14:51:082490瀏覽

質數是大於1的自然數中,沒有除了1和它本身之外其他因子的數。

這篇帖子,將考慮如何求指定範圍內的質數。

實作函數有以下的特性:

1.它接受2個參數,代表兩個邊界,例如getPrimes(0, 30),代表求030之間的所有質數。

2.兩個參數可以第一個比第二個大,例如getPrimes(30, 0),它仍然代表求030之間的所有質數。

3.兩個邊界值都在考慮的範圍內。

4.傳回值是增序的陣列,裡麵包含該範圍內的所有質數。

問題的想法:

1.首先,需要一個判斷質數的方法。

2.對參數進行處理,判斷上邊界和下邊界。

3.在範圍內進行順序遍歷,只要是質數就存入數組。

程式碼實作:

//判断是否为质数
function isPrime(number) {
	//0,1,负数肯定不是
    if(number < 2){
        return false;
    }
    var factor = Math.sqrt(number);
	//注意:这里是"<=factor",而不是"<"
	//比如说25,factor是5,如果用"<"就会误判
    for(var i=2;i<=factor;i++){
        if(number % i == 0){
            return false;
        }
    }
    return true;
}

//获取范围内的质数
function getPrimes(start, finish) {
	//确定上边界
    var max = Math.max(start, finish);
	//确定下边界
    var min = Math.min(start, finish);
    var result = [];
	//由小到大遍历
    for(var i=min;i<=max;i++){
		//满足质数条件,存入数组
        if(isPrime(i)){
            result.push(i);
        }
    }
    return result;
}

//[]
console.log(getPrimes(0, 0)); 
//[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
console.log(getPrimes(0, 30));
//[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
console.log(getPrimes(30, 0));

以上是JavaScript求指定範圍內的質數的實作程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn