[英]JavaScript Loops With If and Else
為什么以下不能准確記錄一個數字是否為素數?
function isPrime2(num) {
for(let i = 2; i < num; i++) {
if(num % i === 0) {
return console.log(false); break;
} else{return console.log(true)}
}
}
isPrime2(33) 返回真,即使它是一個素數。
如果 i = 2,那么控制台將記錄 true,因為 33/2 = 16.5 但是由於循環沒有結束,下一個 i 值是 i=3,所以控制台不應該記錄 false 然后跳出循環完全,讓最終答案是錯誤的?
這里有兩個問題。
function isPrime2(num) { for (let i = 2; i < num; i++) { const remainder = num % i; console.log({ remainder }); if (remainder === 0) { return console.log(false); break; } else { return console.log(true) } } } isPrime2(33);
i
從2
開始。
if(num % i === 0)
為假,所以我們將 go 改為else
else{return console.log(true)}
導致它記錄為true
並退出 function。
當第一個測試失敗時觸發您的失敗條件,而不是等待循環以任何測試的成功條件完成。
它可以被3
和11
整除。
function isPrime2(num) { for (let i = 2; i < num; i++) { const remainder = num % i; console.log({ remainder }); if (remainder === 0) { return console.log(false); break; } } return console.log(true) } isPrime2(33);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.