Çö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
    a.png
    21,5 KB · Görüntüleme: 186
Çözüm
Teşekkürler. Ben de buna benzer bir şey yapmışım :D 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.
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.
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 :D 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ü.
 
Verdiğiniz kod bloğu tam çalışmıyor 15 sayısına asal dedi. Zaten sayi %2 olması yanlış. Sayı % i olmalı ama böyle nasıl yapabilirim onu bulmaya çalışıyorum. Sizin kod bloğunuz tek sayıları yazdırmaya yarar sadece.
[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?
 
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 :D 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ü.
Gecenin bu saatinde bunu anlamaya uğraşmayacağım. Ama yarın çözebilirsem yazacağım :D
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.
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
[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ı bahsediyo
Bunun gibi ama bu kod bloğunda da hata var 15 sayısına asal diyor.
 
Gecenin bu saatinde bunu anlamaya uğraşmayacağım. Ama yarın çözebilirsem yazacağım :D

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
 
[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_()
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı