首先需要了解什么是质数。质数是指除了1和本身以外,没有其他约数的自然数。
我们需要遍历数组,然后判断每个元素是否为质数。为了判断一个数是否为质数,可以使用以下思路:
1.如果这个数小于等于1,则不是质数。
2.如果这个数等于2或3,则是质数。
3.如果这个数能够被2或3整除,则不是质数。
4.判断这个数是否能够被3到sqrt(n)之间的数整除,如果存在一个数能够整除,则不是质数。
可以使用以下代码来实现:
const arr = [2, 3, 4, 5, 6, 7, 8, 9]; const primeArr = [];
for (let num of arr) { if (num <= 1) { continue; } if (num === 2 || num === 3) { primeArr.push(num); continue; } if (num % 2 === 0 || num % 3 === 0) { continue; }
let i = 5; while (i * i <= num) { if (num % i === 0 || num % (i + 2) === 0) { break; } i += 6; }
if (i * i > num) { primeArr.push(num); } }
console.log(primeArr); // 输出 [2, 3, 5, 7]
在上述代码中,我们遍历了数组中的所有元素,然后对于每个元素,判断其是否为质数。如果是,则将其添加到primeArr数组中。最后,输出primeArr数组即为数组中的所有质数。
值得注意的是,在代码中使用了continue和break来提高效率,使得对于非质数的元素,可以直接跳过,不做无用的判断和计算。同时使用了while循环和i += 6的方法,避免了对于所有大于3的数进行完整的循环计算,提高了效率。
上一篇:不使用函数来提高速度?(C++)