Çözüldü Python'da Asal Sayı Oluşturma

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Tanrısal Su

Kilopat
Katılım
2 Ocak 2015
Mesajlar
107
Arkadaşlar, şöyle bir şey yaptım ama çalışmıyor. Çalışmama nedenini ve nasıl düzeltebileceğimi bilen biri var mı?
 

Dosya Ekleri

  • a.png
    21,5 KB · Görüntüleme: 202
Çözüm
Teşekkürler. Ben de buna benzer bir şey yapmışım ama nedense benimki çalışmamıştı.
Hocam sizin kodunuzu anlatayım:

Mesela 15 girdik, kodunuz çalışmaya başladı.
- 2 Bölünür mü? Bölünmez, o zaman asaldır, döngüyü bitir.

Siz bölündüğü veya bölünmediği anda karar verip döngüyü bitiriyorsunuz. Asıl yapılması gereken bölünebildiği zaman asal olmadığına karar vermek, bölünemediğinde de en sona kadar devam etmek. Eğer hiç bölünemediyse zaten asaldır.

Yardımcı olduysa çözüm olarak işaretlerseniz sevinirim hocam.
Hocam ben de python öğrenme sürecindeyim de sizin kodunuzdaki hata ilk break kaldırılınca düzelir mi?
Break sadece döngüden çıkmak için var Hoca'm. Break ile ilgisi yok.
Hoca'm aslında sorun sizin exit yazmanız ben ise break ile çıkmaya çalıştım. Kodumda exit kullanınca çalıştı. Aradaki fark ne tam olarak?
 
Kod:
a = int(input())
Counter = True
if a<2:
  print("En küçük asal sayı 2 sayısıdır.")
else:
  for i in range(2, a-1):
    if a % i == 0:
      Counter = False
    else:
      Counter = True
  if Counter == True:
    print("Sayı asal değil.")
  else:
    print("Sayı asal.")


Bu şekilde buldum hocam.
 
Hoca'm aslında sorun sizin exit yazmanız ben ise break ile çıkmaya çalıştım. Kodumda exit kullanınca çalıştı. Aradaki fark ne tam olarak?
exit() kullanınca döngüden sonra kod yazılmış olsaydı onlar da çalışmazdı. Çünkü direkt programı bitiriyor. Break ise o anki bloktaki döngüyü bitiriyor. Sizin kodunuzda aralarında bir fark yok, zaten ilk başta ben de ona anlam verememiştim, neden exit() ile yazmamı istedi diye Kodunuz aynen şuan ki şeklindeyse ve sadece break'leri, exit() ile değiştirdiyseniz şans eseri olduğunu düşünüyorum. Onunla bir ilgisi yok çünkü.
 
[CODE lang="sass" title="Asal Sayı" highlight="17"]sayi = int(input("Sayı giriniz\n"))

while True:
if sayi == 2:
print("Sayı asaldır.")
break
if sayi < 2:
print("Sayı 2'den küçük olamaz.")
break
for i in range(2, sayi+1):
if sayi % i == 0:
print("Sayı asal değildir.")
exit()
else:
print("Sayı asaldır.")
exit()[/CODE]

bundan mı bahsediyorsunuz?
 
Gecenin bu saatinde bunu anlamaya uğraşmayacağım. Ama yarın çözebilirsem yazacağım
Burada çıktı verecek bir şeyler eksik gibi hocam if bloğundan sonra print ile bir şeyler yazdırmak lazım vs. ve a-1 yerine a yapmalıyız. Zaten a sayısını içermiyor
Bunun gibi ama bu kod bloğunda da hata var 15 sayısına asal diyor.
 
[CODE lang="python" title="Asal Sayı" highlight="14"]sayi = int(input("Sayı giriniz\n"))

while True:
if sayi == 2:
print("Sayı asaldır.")
break
if sayi < 2:
print("Sayı 2'den küçük olamaz.")
break
for i in range(2, sayi):
if sayi % i == 0:
print("Sayı asal değildir.")
exit()
print("Sayı asaldır.")[/CODE]
bu şekil çalışır
 
Neden sonsuz döngüye aldınız ki? Orada while True'ya ihtiyaç yok.
 
Hocam sizin programda sayı yerine harf girilirse çöker. Şöyle bir kod yazdım daha sorunsuz çalışacaktır.

Python:
asal = [2, 3, 5, 7, 11]
sayi = 0


def input_():
    global sayi
    try:
        sayi = int(input("Sayı giriniz: "))
    except:
        print("Sayı girmeniz gerekmektedir.")
        input_()
    finally:
        test()


def test():
    if sayi < 2:
        print("2 Sayısından küçük asal sayı yoktur")
    if sayi in asal:
        print(f"{sayi} Sayısı asaldır.")

    else:
        for i in range(2, sayi):
            if sayi % i == 0:
                print(f"{sayi} Sayısı asal değildir.")
                break
            else:
                print(f"{sayi} Sayısı asaldır.")
                break


input_()


input_()
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…