這篇帖子,將考慮如何求指定范圍內的質數。
實現函數有如下的特性:
1.它接受2個參數,代表兩個邊界,比如getPrimes(0, 30),代表求0到30之間的所有質數。
2.兩個參數可以第一個比第二個大,比如getPrimes(30, 0),它依然代表求0到30之間的所有質數。
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));
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com