Menghasilkan bilangan prima
Angka integer lebih dari 1
disebut bilangan prima jika itu tidak bisa dibagi tanpa sisa oleh siapapun kecuali 1
dan bilangan itu sendiri.
Dengan kata lain, n > 1
adalah prima jika tidak dapat dibagi secara merata oleh apapun kecuali 1
dan n
.
Contohnya, 5
adalah prima, karna tidak bisa dibagi tanpa sisa oleh 2
, 3
dan 4
.
Tulis kode yang menghasilkan bilangan prima dalam interval dari 2
sampai n
.
Untuk n = 10
hasilnya akan 2,3,5,7
.
P.S. Kode harus bekerja untuk segala n
, tidak disetel untuk nilai tetap apapun.
Ada banyak algoritma untuk tugas ini.
Mari gunakan perulangan bersarang:
For each i in the interval {
cek if i has a divisor from 1..i
if yes => the value is not a prime
if no => the value is a prime, show it
}
Kode menggunakan label:
let n = 10;
nextPrime:
for (let i = 2; i <= n; i++) { // untuk setiap i...
for (let j = 2; j < i; j++) { // mencari pembagi..
if (i % j == 0) continue nextPrime; // bukan prima, pergi ke i berikutnya
}
alert( i ); // prima
}
Ada banyak ruang untuk mengoptimalkannya. Misalnya, kita dapat mencari pembagi dari 2
ke akar kuadrat dari i
. Tapi bagaimanapun, jika kita ingin sangat efisien untuk interval besar, kita perlu mengubah pendekatan dan mengandalkan matematika lanjutan dan algotima rumit seperti Quadratic sieve, General number field sieve dsb.