[英]Why does this prime-checker work?
以下代碼正確確定數字是否為素數:
var num = parseInt(prompt("Number:"));
var ans = "prime";
for (var i = 2; i < num; i++) {
if (num % i === 0) {
ans = "not prime";
break;
}
}
alert(ans);
為什么此代碼適用於輸入“2”?
我認為2的輸入會給出“不是素數”,因為2%2 === 0就是真的。
我認為2的輸入會給出“不是素數”,因為2%2 === 0就是真的。
2 % 2
從未發生過。
檢查可分割數字的循環是:
for (var i = 2; i < num;...
i
從2
開始, num
是用戶輸入。
如果num
也是 2
,那么i < num
的第一次測試是2 < 2
,這是假的。 循環從不執行, ans
仍然是“素數”。
魔術似乎處於循環狀態:
for (var i = 2; i < num; i++)
如果輸入2,則不滿足條件i<num
,因此不執行正文。
但。 如果您使用1作為您的值,它也將返回'prime'。 或者,如果輸入0或負值。 如果給定的數字是否為素數,則可能更好,不僅僅是通過檢查某組數字 - 或者至少進行一些輸入驗證。
當然,如果主要練習只是用循環練習,他的代碼就可以了。
HTH jesterchen
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.