我正在尝试生成小于20的前几个质数(根据我的有限知识,这是我唯一知道如何做到的方式):
let arr = [];
for (let x = 3; x <= 20; x++) {
for (let i = 20; i > 0; i--) {
if (x % i !== i) {
arr.push(x)
}
}
console.log(arr)
}
我想预先说明,虽然有更高效的方法可用,但我正在尝试从头开始做事并学习更高效的方法,而不是让别人告诉我。
代码的意图:
- 一个外部循环,从3开始,到20结束,增量为1
- 一个内部循环,从20开始,到0结束,减量为1。
- 内部循环中的条件:如果数字x对i的范围取模并返回i,则它不是素数。
示例:
7 is prime.
7 % 7 = 0
7 % 6 = 1
7 % 5 = 2
7 % 4 = 3
7 % 3 = 4
7 % 2 = 5
7 % 1 = 6
而
6 is not prime
6 % 6 = 0
6 % 5 = 1
6 % 4 = 2
6 % 3 = 3 <=== because of this
6 % 2 = 4
6 % 1 = 5
输出是从3到20的数字范围的20个倍数。即, 3,3,3,3,3,........20,20,20.....