首页 > 编程 > JavaScript > 正文

JavaScript求指定范围内的质数

2019-11-06 06:12:55
字体:
来源:转载
供稿:网友

质数是大于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));


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表