簡體   English   中英

為什么這個主要檢查工作?

[英]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;...

i2開始, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM