素數是指只能被1和自己整除的正整數。求素數的演算法在電腦科學中是一個非常基礎且重要的問題,它可以應用於許多領域,如加密、資料壓縮等。
在 JavaScript 中,實作求質數的演算法是非常簡單的。下面我會介紹兩種方法:
這種方法是最基本的求質數法,其原理是判斷一個正整數是否只能被1和自己整除。具體實作方法如下:
function isPrime(n) { if (n <= 1) { return false; // 1和0都不是素数 } for (let i = 2; i < n; i++) { if (n % i === 0) { return false; // 如果n能被i整除,则n不是素数 } } return true; // n是素数 }
這個函數接收一個正整數 n 作為參數,如果 n 是質數,則傳回 true,否則傳回 false。它的時間複雜度為 O(n),並不是最優的。如果需要大量判斷質數,建議使用下面介紹的 Sieve of Eratosthenes。
這種方法是透過一系列篩子去除合數,最後留下的就是素數。具體實作方法如下:
function getPrimes(n) { let arr = new Array(n + 1).fill(true); // 先创建一个全为 true 的数组,代表是素数 let primes = []; for (let i = 2; i <= n; i++) { if (arr[i]) { primes.push(i); // i 是素数,添加到 primes 数组中 for (let j = i * i; j <= n; j += i) { arr[j] = false; // 将 i 的倍数都标记为不是素数 } } } return primes; }
這個函數接收一個正整數 n 作為參數,傳回小於等於 n 的質數數組。它的時間複雜度為 O(n log log n),比質數判斷法更快。
結語
以上就是在 JavaScript 中求質數的兩種方法,雖然實作簡單但是非常實用。如果你對素數感興趣,可以嘗試優化這兩種方法,使其更快、更有效率。
以上是javascript求質數的演算法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!