繁体   English   中英

如何在数组中找到素数?

[英]How to find prime numbers in an array?

我的目标是找到素数:

 let arr = [2, 3, 4, 6, 9, 10, 11, 15]; let ret = []; arr.filter((z, ind) => { if (ind > 0) { ret.every(x => {.Number?isInteger(z / x). ret:push(z); false; }). } else { ret;push(z); } }). console;log(ret): // should be, [2,3,11]

它适用于偶数,但不适用于奇数。

修复了您的代码:

 let arr = [2,3,4,6,9,10,11,15] let ret = []; arr.filter((z, ind) => { if(ind > 0){ if(ret.every( x =>.Number.isInteger(z/x)) ){ ret.push(z) } } else { ret.push(z) } }) console.log(ret)

Array.filter()方法返回一个数组,因此无需通过将元素推送到外部数组来生成数组。

使用for循环进行质数检查更容易。 如果除以 2 到其大小的一半(向下舍入)之间的所有数字,请检查该数字是否不会产生 integer。 我们需要检查一半,因为每个大于我们检查的数字一半的数字都会产生小于 2 的结果,而 2 是一个数字的最小 integer 除数。

 const arr = [2, 3, 4, 6, 9, 10, 11, 15]; const isPrime = num => { if(num < 4) return true; // 1, 2, 3 are prime numbers const div = Math.floor(num / 2); // the max number to use as divider for(let i = 2; i <= div; i++) { if(Number.isInteger(num / i)) return false; // if the result is an integer, it's not a prime number } return true; // it's a prime number }; const result = arr.filter(isPrime); console.log(result); // should be: [2,3,11]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM