Dalam matematik, nombor perdana ialah nombor bulat yang lebih besar daripada 1 yang tidak boleh dibahagikan dengan mana-mana nombor lain kecuali 1 dan nombor itu sendiri. Mencari nombor perdana dalam julat tertentu boleh menjadi tugas pengaturcaraan biasa. Berikut ialah penjelasan terperinci tentang cara mendekati masalah ini dalam JavaScript:
Coretan kod yang disediakan cuba mencari nombor perdana antara 0 dan 100 menggunakan pendekatan brute force. Ia menyemak sama ada nombor itu boleh dibahagikan dengan mana-mana nombor dari 2 hingga 12 dan mengembalikan nombor itu jika tiada pembahagi ditemui. Walau bagaimanapun, pendekatan ini mempunyai beberapa kelemahan:
Algoritma yang lebih cekap untuk mencari nombor perdana dipanggil Ayak Eratosthenes. Begini caranya:
Dalam JavaScript, kod untuk Sieve of Eratosthenes kelihatan seperti ini:
<code class="js">function getPrimes(max) { var sieve = [], i, j, primes = []; for (i = 2; i <= max; ++i) { if (!sieve[i]) { // i has not been marked -- it is prime primes.push(i); for (j = i << 1; j <= max; j += i) { sieve[j] = true; } } } return primes; }</code>
Pendekatan ini mempunyai kerumitan masa O(n log log n), yang jauh lebih cekap daripada pendekatan brute force.
Atas ialah kandungan terperinci Bagaimanakah anda cekap mencari nombor perdana dalam julat tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!