Python Örnekleri Asal Sayı Bulucu
Python daha önce en iyi programlama dillerinin sıralandığı listemizde 1. sırada yer almıştı. Sitemizde Python örnekleri son yılların en popüler dili olan Python öğrenmek ve kendini geliştirmek isteyenler için sitemizde yer alacaktır. 2 yıldır Lise düzeyinde Python dersleri verdiğimden elimde oldukça fazla kaynak ve örnek birikti bunları yeri geldikçe sitemizde paylaşacağım. Bu yüzden sitemizi takip etmeyi bırakmayın.
İlk Python kod örneğimiz asal sayı bulma ile ilgili olacak. Asal sayılar, sadece iki pozitif tam sayı böleni olan doğal sayılardır. Sadece kendisine ve 1 sayısına bölünebilen 1’den büyük pozitif tam sayılardır. Öklid’den beri asal sayıların sonsuz olduğu kabul edilir. Bu örnekler aslında project Euler isimli büyüleyici matematik dünyasına ilgi duyan herkesin becerilerini ve zevklerini teşvik etmek, meydan okumak ve geliştirmek için var olan bir sitede olan iki problemin çözümü olarak hazırlanan kodlar.
Normalde bir sayının asal olup olmadığını bulmak için o sayıyı o sayıdan küçük olan tüm sayılara bölmek gerekir. Ancak Project Euler‘de 7. soru 10001. asal sayıyı bulun. Normal yollarla 10001 tane asal sayı bulmak orta hızdaki bir bilgisayar için saatler alacak bir işlemdir. Bu problemi saniyeler içerisinde halledebilen bir yöntem paylaşıyorum.
Yöntemi kısaca anlatacak olursak :
- İstenilen n sayısı büyüklüğünde her elemanı true olan bir dizi oluşturuyoruz [true, true, true,…] gibi.
- En küçük asal sayı olan 2 den başlayan bir while döngüsü başlatacağız. p =2
- Döngümüz p sayısının karesi n den küçük olduğu sürece devam edecek
- Eğer sayının karşılığı dizi içinde true ise asal olup olmadığını kontrol ediyoruz
- Eğer sayı asal değilse sayının ve sayının katlarını dizi içindeki yerlerini false yapıyoruz bu sayede tekrar aynı sayıları kontrol etmeyeceğiz
Python Örnekleri Asal Sayı Bulucu Kodlar
Yazdığımız kodun temel algoritması bu kadar. Alttaki örnek 10001. asal sayının ne olduğunu gösterecek ve bunu saniyeler içinde tamamlayacak olan kod:
#asal sayı bulma fonksiyonu #10001 . ci asal sayi : 104743 def asalSayiBul(n): #n sayisina kadar olan asal sayıları bulur k=0 asalSayilar = [True for i in range(n+1)] # istenilen n sayısı büyüklüğünde her elemanı true olan bir dizi oluşturuyoruz # örnek n = 10 için [True,True,True,True,True,True,True,True,True,True] gibi p=2 #en küçük asal sayı 2 den başlıyoruz while(p*p <=n): # p sayısının karesi n den küçük olduğu sürece devam edecek if(asalSayilar[p]==True): # Eğer sayının karşılığı dizi içinde true ise asal olup olmadığını kontrol ediyoruz for i in range(p*2,n+1,p): asalSayilar[i]= False #eğer sayı asal değilse sayıyı ve sayının katlarını dizi içindeki yerlerini false yapıyoruz bu sayede tekrar aynı sayıları kontrol etmeyeceğiz p+=1 for p in range(2,n): if asalSayilar[p]: k+=1 if (k==10001): print(k,". ci asal sayi : ", p) asalSayiBul(1000000)
Alttaki kodumuzda 2 milyona kadar olan asal sayıların toplamlarını bulan kod örneğimiz.
#asal sayı bulma fonksiyonu def asalSayiBul(n): #n sayisina kadar olan asal sayıları bulur k=0 topla = 0 asalSayilar = [True for i in range(n+1)] # istenilen n sayısı büyüklüğünde her elemanı true olan bir dizi oluşturuyoruz # örnek n = 10 için [True,True,True,True,True,True,True,True,True,True] gibi p=2 #en küçük asal sayı 2 den başlıyoruz while(p*p <=n): # p sayısının karesi n den küçük olduğu sürece devam edecek if(asalSayilar[p]==True): # Eğer sayının karşılığı dizi içinde true ise asal olup olmadığını kontrol ediyoruz for i in range(p*2,n+1,p): asalSayilar[i]= False #eğer sayı asal değilse sayısı ve sayının katlarını dizi içindeki yerlerini false yapıyoruz bu sayede tekrar aynı sayıları kontrol etmeyeceğiz p+=1 for p in range(2,n): if asalSayilar[p]: k+=1 topla = topla + p return topla print("toplam : " , asalSayiBul(2000000))
Daha fazla python örnekleri ile ilgili makeleler ve Python Derslerimiz için sitemizi takip edebilirsiniz ve bu yazıyı Facebook’ta paylaşmayı unutmayın.