質數是大於1的自然數中,沒有除了1和它本身之外其他因子的數。
這篇帖子,將考慮如何求指定範圍內的質數。
實作函數有以下的特性:
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));
以上是JavaScript求指定範圍內的質數的實作程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!