私は初心者で素数テストを完了しようとしていますが、問題が発生しています。ここで私が持っているものです。素数テストの問題点
var n = Number(prompt("Input the number you want to check for prime:"));
var i;
if (n < 2) {
alert(n + " is not a prime number.");
}
for (var i = 2; i <= Math.sqrt(n); i++) {
if (n % i === 0) {
alert(n + " is not a prime number.");
break;
}
else {
alert(n + " is a prime number.");
break;
}
}
その中に3とI入力3または2と任意の番号が「それはにISN場合でも素数として戻って来ている場合には、アラートを除いて正常に動作していますがポップアップ表示されません。 t。それ以外は私のテストのすべてがうまくいっています。
2と3の両方が素数です。問題はループを構造化した方法です。あなたが他の人の中に入ってしまったので、最初からループから外れています。その代わりに何が起きるべきかは、最後のステートメントがループから外れるべきであるということです。また、チェックを完全にやめる必要があります。そのため、関数として関数をラップして 'return'できるようにするか、またはすぐに警告するのではなくフラグを設定することをお勧めします。したがって、' isPrime = true; break; '、その後、' isPrime === true'をチェックします。 –
これは、 'n'が素数であることをアナウンスするときにすべての除数をテストしていないからです。 –