簡體   English   中英

無法找到素數的Javascript代碼

[英]Javascript code to find prime numbers doesn't work

我運行此功能,該功能是通過按鈕觸發的,它應該打印質數。 而是打印了所有檢查過的數字。 用戶應該輸入一個數字(例如100),所有低於該數字的數字將被檢查是否為質數,如果為質數,則將被打印。(i是正在檢查的數字)

function findeprime(num) {
    for (i = 2; i < num; i++) {
        for (coun = 2; coun < i; coun++) {
            if (i % coun == 0) continue;
        }
        document.write(i + " is prime <br/>");
    }
}

我究竟做錯了什么???

您的continue只是打破內循環。 我推薦這樣的東西

function findeprime(num) {
    var isPrime;
    for (var i = 2; i < num; i++) {
        isPrime = true;
        for (coun = 2; coun < i; coun++) {
            if (i % coun == 0) isPrime = false;
        }
        if (isPrime) document.write(i + " is prime <br/>");
    }
}

您的繼續聲明似乎放錯了位置。 它影響內部循環,而您的代碼只有影響外部循環才能正常工作。

由於您無法讓continue語句影響外部循環/塊,請嘗試以下操作:

 function findeprime(num) { for (i = 2; i < num; i++) { var prime = true; for (coun = 2; coun < i; coun++) { if (i % coun == 0) { prime = false; break; } } if(prime) alert(i + " is prime"); } } findeprime(14); 

正如已經指出的那樣,您的continue正在使腳本脫離錯誤的循環。 您也可以標記要中斷的循環

 function findeprime(num) { checknum: for (i = 2; i < num; i++) { for (coun = 2; coun < i; coun++) { if(i % coun == 0) continue checknum; } document.write(i + " is prime <br/>"); } } findeprime(20); 

顯然每個人都已經為您提供了答案,但是出於知識目的,我將再發布一個示例。

 Number.prototype.isPrime = function() { for (var i = 2; i < this; i++) { if (this % i == 0) { return false; } } return true; }; function findPrimes(num) { var results = []; for (var i = 2; i <= num; i++) { if (i.isPrime()) results.push(i); } return results; } var primes = findPrimes(1000); document.write(primes.join(', ')); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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