Asal Sayı Bulma Algoritması
-> 8 – 100 arası asal sayıları yazdıran algoritma:
-> Akış Şeması / Flowchart:
Algoritma konusunu daha iyi kavramak için sorularını çözdüğüm projecteuler’deki bir
soruyu, okulda öğrendiğimiz bir algoritma ile çözmeye çalıştım.
Soru: 2000000’dan küçük olan asal sayıların toplamını yazdırınız.
Önce 3–100, sonra 100’ün sağına 0 ekleyerek sayıyı arttırdım:
Bu algoritma, sadece küçük sayılar için işe yarıyordu. 3–1000000 arası asal sayıları bulması dakikalar sürüyordu. Biraz iyileştirme ile bu süreyi kısaltmak istedim:
Kodun iyileştirilmiş halinde bile sayı büyüdükçe algoritmanın zorlandığını ve 2 milyonu denediğimde 10’larca dakika geçmesine rağmen sonucu bulamadığını gördüm.
İnternette biraz araştırdığımda en hızlı algoritmalardan birini denedim:
–> sieve dizisine n kadar True ekliyor.
–> İlk bulduğu sayı 2
–> 2’nin katlarına False atıyor.
–> Aynı şekilde 3, 5, 7… ‘yi asal olarak ekledikten sonra, katlarına False atıyor.
Böylece asal olmayanlara False atanıyor. Geriye de True, yani asal sayılar kalıyor.
Böylece kodun çalışma süresi 10+ dakikadan 2- saniyeye düştü.