在數學領域,素數是一種十分特殊的數字,它只能被1和它本身整除。而在計算機編程中,尋找素數也是一個比較有趣的話題。在Javascript中,我們可以使用很多種方法來判斷是否為素數以及尋找素數。本文將詳細介紹Javascript中如何判斷100到999之間的素數。
首先,最簡單的方法就是暴力枚舉法。即從2開始一直到該數字的平方根,判斷該數字是否能夠被整除。如果不能被整除,則該數字是素數,否則不是。下面是采用暴力枚舉法判斷100到999之間的所有素數的代碼:
function isPrime(n) { if(n < 2) { return false; } for(var i=2; i<=Math.sqrt(n); i++) { if(n % i === 0) { return false; } } return true; } for(var i=100; i<=999; i++) { if(isPrime(i)) { console.log(i); } }
上述代碼通過一個isPrime函數來判斷是否為素數,該函數接受一個數字n作為參數,返回一個布爾值。接下來使用for循環從100到999的數字依次調用isPrime函數,如果返回值為true,則說明該數字是素數,使用console.log函數進行輸出。
暴力枚舉法雖然簡單,但在處理大量數據時會十分耗時。因此常用的方法是質數篩法。質數篩法思路比較簡單,即從2開始 mark 掉所有 2 的倍數;再從下一個未標記的數字 3 開始,標記所有 3 的倍數;接下來重復這個過程,即先找到下一個未標記的數字 p 作為新的質數,然后標記它的倍數。下面是使用質數篩法判斷100到999之間所有素數的代碼:
function getPrimes(n) { var primes = []; var flags = new Array(n).fill(true); for(var i=2; i<n; i++) { if(flags[i]) { primes.push(i); for(var j=i*i; j<n; j+=i) { flags[j] = false; } } } return primes; } var primes = getPrimes(1000); for(var i=0; i<primes.length; i++) { if(primes[i] >= 100 && primes[i] <= 999) { console.log(primes[i]); } }
上述代碼中,我們定義了一個getPrimes函數,該函數接受一個整數n作為參數,返回一個數組,包含小于n的所有素數。在該函數中,我們使用了一個數組flags來標記數字是否為素數,初始時所有數字都被標記為素數。接下來,從2開始依次遍歷每個數字,如果該數字標記為素數,則將其添加到素數數組primes中,并將其所有的倍數標記為非素數。最后返回素數數組。最后,我們使用getPrimes函數得到所有小于1000的素數,遍歷這個數組,輸出在100到999之間的所有素數。
總的來說,以上兩種方法都可以用來判斷100到999之間是否為素數。如果你需要判斷一些較小的數字,建議使用暴力枚舉法;如果你需要判斷一些較大的數字,則建議使用質數篩法。