Python ile Hızlı Asal Sayı Tespiti
Normalde bugün Euler Problemleri serisinde 12. yazıyı yazacaktım, ama kendimi asal sayı tespit programlarına biraz fazla kaptırdım. Euler problemine geçmeden önce, son yazdığım asal sayı bulma fonksiyonunu paylaşayım istedim.
Bu yazıya algoritmanın tamamını açıklayacak kadar vakit harcamak istemiyorum. Merak edenler Google'da Wheel Factorization aramasına bakabilirler. Tekerlek olarak (2,3,5) tekeri kullandım. Performans karşılaştırmasına gelirsek;
>>> import timeit >>> timeit.timeit("basit_sieve3(20000000)", "from euler10 import basit_sieve3", number=10) 23.53885076855179 >>> timeit.timeit("basit_sieve4(20000000)", "from euler10 import basit_sieve4", number=10) 15.435177794462824
Yirmimilyon'a kadar asal sayıları bulma konusunda yüzde 35-40 arası bir hızlanma sağladık. Bu performans artışında get_candidates3
fonksiyonunun da
önemli bir payı var. Asal sayı adayları listesini oluşturmak için kullandığım diğer yöntemlerde bu denli bir performans artışı sağlayamamıştım. Kayda
geçmesi açısından onları da buraya bırakıyorum.