質(zhì)數(shù)是大于1的自然數(shù)中,沒有除了1和它自身之外其他因子的數(shù)。
這篇帖子,將考慮如何求指定范圍內(nèi)的質(zhì)數(shù)。
實現(xiàn)函數(shù)有如下的特性:
1.它接受2個參數(shù),代表兩個邊界,比如getPRimes(0, 30),代表求0到30之間的所有質(zhì)數(shù)。
2.兩個參數(shù)可以第一個比第二個大,比如getPrimes(30, 0),它依然代表求0到30之間的所有質(zhì)數(shù)。
3.兩個邊界值都在考慮的范圍內(nèi)。
4.返回值是一個增序的數(shù)組,里面包含該范圍內(nèi)的所有質(zhì)數(shù)。
問題的思路:
1.首先,需要一個判斷質(zhì)數(shù)的方法。
2.對參數(shù)進行處理,判斷上邊界和下邊界。
3.在范圍內(nèi)進行順序遍歷,只要是質(zhì)數(shù)就存入數(shù)組。
代碼實現(xiàn):
//判斷是否為質(zhì)數(shù)function isPrime(number) { //0,1,負(fù)數(shù)肯定不是 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;}//獲取范圍內(nèi)的質(zhì)數(shù)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++){ //滿足質(zhì)數(shù)條件,存入數(shù)組 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));
新聞熱點
疑難解答
圖片精選