有一种算法可以通过将数字 N 与之前的所有数字进行比较来推导所有素数:
let gen = prompt("введите число, вы получите все простые числа от 2 до этого числа");
let check = true;
for (let i = gen - 1; i >= 2; i--) {
check = true;
for (let j = i - 1; j > 1; j--) {
// if(j == 1) {
// break;
// }
if (i % j == 0) {
check = false;
break;
}
}
if (check) {
document.write(i + "<br/>");
}
}
比如说,会输入数字 3。理论上,二分不应该以任何方式显示,因为 i == 2,而 j == 1,这意味着 i 将被 j 除以没有余数:
if(i % j == 0) { //i % j == 0, где i == 2, j == 1
check = false;
break;
}
因此,检查 == false 并转到if(check)
,这将无法打印 i (i == 2)。但是,我们看到在 gen 变量中输入 3 时,这两个仍然显示为质数,尽管它被无余数除以 j
如果你这样想,那么你就不会得到一个数字。