김현이

[Java] Stream Kullanarak Tembel (Lazy) Şekilde Asal Sayılar Bulma

  • Yazım Dili: Korece
  • Baz Ülke: Tüm Ülkelercountry-flag
  • BT

Oluşturulma: 2024-07-23

Oluşturulma: 2024-07-23 19:39

Genellikle n'nin asal sayı olup olmadığını kontrol etmek için 2'den n - 1'e kadar n'yi bölerek, bölünebilir olup olmadığını kontrol ederiz.

Bu yöntemde, bazı iyileştirmeler uygulayarak daha verimli hale getirebilir ve Stream kullanarak tembel değerlendirme (lazy evaluation) uygulayabiliriz.


Basit (Naive) Yöntem

Aşağıda n'nin asal sayı olup olmadığını kontrol eden basit bir yöntem verilmiştir.

İyileştirmeler

  • n = a x b olarak ifade edilirse, a > b varsayımı genelliği bozmaz.
    Yani, i, sqrt(n)'ye kadar kontrol edilmelidir. sqrt() işlemi maliyetli olduğundan, i * i <= n koşulu ile değiştirilebilir.
  • 5'ten büyük asal sayılar 6k ± 1 biçimindedir. Bu nedenle, i, 6'şar artırılarak kontrol edilirse, kontrol sayısı azaltılabilir.

Geliştirilmiş Yöntem


Stream ile Tembel Değerlendirme Uygulamak

Java'daki Stream, List'ten farklı olarak, bir işlem tanımlandığında hemen çalıştırılmaz.

Her bir elemanın nasıl hesaplanacağını tanımlayan bir durumda bekler ve belirli bir elemana ihtiyaç duyulduğunda, yalnızca o elemanı bulmak için gereken işlemi gerçekleştirir.

Bunu kullanarak, aşağıdaki gibi asal sayıları bulan bir Stream oluşturabiliriz.

Çalıştırma Sonucu

Tüm Kod

Çalıştırma Sonucu

[Java] Stream Kullanarak Tembel (Lazy) Şekilde Asal Sayılar Bulma




Yorumlar0