[英]trying to find Prime numbers in an array
我想从数组中删除非素数,以下只是删除偶数而不是素数。
function sumPrimes(num) {
//Produce an array containing all number of to and including num
let numArray = [];
for (let i = 1; i <= num; i++) {
numArray.push(i);
}
//Remove non-prime numbers from the array
numArray.map((number) => {
for (let i = 2; i < number; i++) {
if(number % i === 0) {
let index = numArray.indexOf(number);
return numArray.splice(index, 1);
}
}
});
return numArray;
}
sumPrimes(10);
目前正在返回:
[1, 2, 3, 5, 7, 9]
但是,素数是1、2、3、5、7(不包括9);
使用filter()
代替:
var numArray = [2, 3, 4, 5, 6, 7, 8, 9, 10] numArray = numArray.filter((number) => { for (var i = 2; i <= Math.sqrt(number); i++) { if (number % i === 0) return false; } return true; }); console.log(numArray);
上一个答案对负数不起作用。
正如您在此处看到的,查找素数的最简单方法是:
const array = [-5, -3, -2, -1, ...Array(20).keys()]; // Array(20).keys() generates numbers from 0 to 19. function isPrime(num) { for (let start = 2; num > start; start++) { if (num % start == 0) { return false; } } return num > 1; } console.log(array.filter(isPrime)); // [2, 3, 5, 7, 11, 13, 17, 19]
Farnaz Kakhsaz 的答案效果很好,但速度很慢。 你只需要检查直到'num'的根。 谢谢!
const array = [-5, -3, -2, -1, ...Array(20000).keys()];
function isPrime(num) {
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) {
return false;
}
}
return num > 1;
}
console.log(array.filter(isPrime));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.