kembali ke pelajaran

Menghasilkan bilangan prima

pentingnya: 3

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.