Python, girilen sayının asal olup olmadığını bulan komut

Çok teşekkür ederim. Yalnız ne kadar uğraşsam hatalar çıkıyor ya. Biraz daha uğraşmam gerekecek.

Hocam kapsamlı bir araştırma ile şu sonuca vardım. Klavye ile girdiğiniz sayı asal ilse kesinlikle doğruyu gösteriyor. Sapma yok. Asal değilse de 11 ve 13.. Dediğiniz gibi uzar yanlış gösterebiliyor. Fakat şöyle bir şey de var girdiğimiz sayı ya asal değilse bunu asal olarak gösteriyorsa? Mantık hatası olduğu için dediğiniz doğrudur. Fakat giriş seviyesinde birine göre sizce nasıl yazmışım? :sansür:
Hata yapmak çok doğal ve önemli bir şeydir. Hata yapılmalıdır ki eksiklerimizi tamamlayalım. Program gerçekten güzel, ama eksik. Girilen sayı, 1 ve "girilen sayı" arasındaki sayılara bölünsün. Eğer ki kalansız bölebilen bir sayı yoksa o sayı asaldır. Bunu Python'da yapmayı deneyin.

Ben sizin için yaptım. Eğer yapamazsanız size nasıl yaptığımı gösterebilirim.
 
Hata yapmak çok doğal ve önemli bir şeydir. Hata yapılmalıdır ki eksiklerimizi tamamlayalım. Program gerçekten güzel, ama eksik. Girilen sayı, 1 ve "girilen sayı" arasındaki sayılara bölünsün. Eğer ki kalansız bölebilen bir sayı yoksa o sayı asaldır. Bunu Python'da yapmayı deneyin.

Ben sizin için yaptım. Eğer yapamazsanız size nasıl yaptığımı gösterebilirim.
Aslında döngülere girmeden basit olsun diye sadece if, elif ve else ile yapmaya çalışmıştım. Döngüler, range, def komutu işin içine girerse uzuyor. Yaparım ama zamanımı alır biraz. En iyisi siz paylaşın bari eksik bırakmayalım programı madem konu açtık :)
 
print ("Asal sayı bulma programına hoşgeldiniz")
while True:
i=1
x=6
asalx = int(input("Sayı giriniz: "))
if i<asalx:
while x>5:
i=i+1
if asalx%i==0:
if i<asalx:
print(asalx, "sayısı asal değildir")
x=4
else :
print(asalx, "sayısı asaldır")
break
else :
print(asalx, "sayısı asal değildir")


Web Sitesi yapımına merak salmadan önce Python'la uğraşıyordum. O zamanda beri açıp da bakmamıştım. Sayenizde (@Rahasa )Python'da en azından hala bir şeyler yapabildiğimi anladım. Belki daha kolay veya daha az kodla yapılabiliyordur ama ben bu şekilde yaptım. Program çalışıyor, 999 983 sayısının dahi asal sayı olduğunu bulabildi.
Asal_Sayı_Kontrol_Programı.png
 
Son düzenleme:
print ("Asal sayı bulma programına hoşgeldiniz")
while True:
i=1
x=6
asalx = int(input("Sayı giriniz: "))
if i<asalx:
while x>5:
i=i+1
if asalx%i==0:
if i<asalx:
print(asalx, "sayısı asal değildir")
x=4
else :
print(asalx, "sayısı asaldır")
break
else :
print(asalx, "sayısı asal değildir")


Web Sitesi yapımına merak salmadan önce Python'la uğraşıyordum. O zamanda beri açıp da bakmamıştım. Sayenizde (@Rahasa )Python'da en azından hala bir şeyler yapabildiğimi anladım. Belki daha kolay veya daha az kodla yapılabiliyordur ama ben bu şekilde yaptım. Program çalışıyor, 999 983 sayısının dahi asal sayı olduğunu bulabildi.Eki Görüntüle 326035
Hocam 0 ile 1 tanımsız onları da tanıttın mı eksiksiz bir kodlama çalışması oldu bence :)
Yazdığınız en son else kod bloğundan önce 1 boşluk bırakıp elif ile tanıttım oldu şöyle;
asalsayi.png


Tabi saat biraz geç oldu şimdi yarın bu program ile denemeler yapacağım olursa çok faydalı olur.
 
Hocam 0 ile 1 tanımsız onları da tanıttın mı eksiksiz bir kodlama çalışması oldu bence :)
Yazdığınız en son else kod bloğundan önce 1 boşluk bırakıp elif ile tanıttım oldu şöyle;
Eki Görüntüle 326036

Tabi saat biraz geç oldu şimdi yarın bu program ile denemeler yapacağım olursa çok faydalı olur.
If i<asalx: yazmıştım. i'nin değeri 1 olduğu için 1 veya 1'den küçükse en alttaki Else bloğu devreye giriyor. Negatif sayılar, 0 ve 1 'i bu sebepten asal sayı kabul ediyor. Bu arada gönderdiğiniz resimde en alttaki Else bloğunun yeri olmamış gibi gördüm.
 
Loop kullanmadan bulamazsiniz sayinin asal olup olmadigini.

999983 sayisiyla bir deneyin algoritmanizi.

Bir de sayinin asal olup olmadigini anlamak icin kendisinden kucuk tum sayilarla bolunebilir olup olmadigini test etmeye gerek yok.

2 ile bolunebiliyorsa, x/2 ile de bolunebiliyordur; 3 ile bolunebiliyorsa x/3 ile bolunebiliyordur ... Dolayisiyla karekok'une bolunebiliyorsa, tam kare bir sayi demektir.

python loopunu while( i*i <= x) seklinde yaparsaniz test etmeniz gereken sayilarin yarisini elemis olursunuz zaten kafadan.
 
Son düzenleme:
Loop kullanmadan bulamazsınız sayının asal olup olmadığını.

999983 sayısıyla bir deneyin algoritmanizi.

Bir de sayının asal olup olmadoğını anlamak için kendisinden kuçuk tüm sayılarla bölünebilir olup olmadığını test etmeye gerek yok.

2 ile bölünebiliyorsa, x/2 ile de bolunebiliyordur; 3 ile bölünebiliyorsa x/3 ile bölünebiliyordur ... Dolayısıyla karekök'üne bölünebiliyorsa, tam kare bir sayı demektir.

python loopunu while( i*i <= x) şeklinde yaparsanız test etmeniz gereken sayıların yarısını elemiş olursunuz zaten kafadan.

Benim de aklıma geldi ama performans için karıştırmaya gerek yok diye düşündüm. Özellikle büyük sayılarda çok işe yarar.
 
Son düzenleme:
Evet zamanında Python'a merak salmıştım. Yardım etmeye çalışacağım.

sayi = int(input("Sayı gir:"))
bolen=0
for i in range(1,sayi+1):
if sayi%i==0:
bolen+=1
if bolen==2:
print("Girilen sayı ASALDIR")
else: print("Sayı Asal DEĞİLDİR")
 
Loop kullanmadan bulamazsiniz sayinin asal olup olmadigini.

999983 sayisiyla bir deneyin algoritmanizi.

Bir de sayinin asal olup olmadigini anlamak icin kendisinden kucuk tum sayilarla bolunebilir olup olmadigini test etmeye gerek yok.

2 ile bolunebiliyorsa, x/2 ile de bolunebiliyordur; 3 ile bolunebiliyorsa x/3 ile bolunebiliyordur ... Dolayisiyla karekok'une bolunebiliyorsa, tam kare bir sayi demektir.

python loopunu while( i*i <= x) seklinde yaparsaniz test etmeniz gereken sayilarin yarisini elemis olursunuz zaten kafadan.
En son atılan resimdeki hepsini gösteriyor. 999.983'ü asal olarak gösterdi. Bence program tamamdır.
 

Technopat Haberler

Yeni konular

Geri
Yukarı