김현이

[Java] Mencari Bilangan Prima secara Lazy dengan Stream

  • Bahasa Penulisan: Bahasa Korea
  • Negara Standar: Semua Negaracountry-flag
  • TI

Dibuat: 2024-07-23

Dibuat: 2024-07-23 19:39

Secara umum, untuk memeriksa apakah n adalah bilangan prima, kita membagi n dengan angka dari 2 hingga n - 1 dan memeriksa apakah hasilnya habis dibagi.

Dalam metode ini, mari kita terapkan beberapa pengoptimalan untuk meningkatkan efisiensi dan menerapkan evaluasi malas (lazy evaluation) menggunakan Stream.


Metode Naif

Berikut adalah metode naif untuk memeriksa apakah n adalah bilangan prima.

Peningkatan

  • Jika n = a x b, kita dapat berasumsi bahwa a > b tanpa mengurangi tingkat keumuman.
    Artinya, kita hanya perlu memeriksa hingga akar kuadrat dari n (sqrt(n)). Karena operasi sqrt() mahal, kita dapat menggantinya dengan kondisi i * i <= n.
  • Bilangan prima yang lebih besar dari 5 memiliki bentuk 6k ± 1. Oleh karena itu, kita dapat mengurangi jumlah pemeriksaan dengan meningkatkan i sebanyak 6.

Metode yang Ditingkatkan


Menerapkan Evaluasi Malas dengan Stream

Stream di Java berbeda dengan List, di mana operasi tidak langsung dieksekusi saat didefinisikan.

Stream hanya mendefinisikan cara menghitung setiap elemen dan menunggu hingga elemen tertentu diperlukan, lalu hanya melakukan operasi untuk mendapatkan elemen tersebut.

Dengan memanfaatkan hal ini, kita dapat membuat Stream untuk menghasilkan bilangan prima seperti berikut.

Hasil Eksekusi

Kode lengkap

Hasil eksekusi

[Java] Mencari Bilangan Prima secara Lazy dengan Stream




Komentar0