Kullanıcıdan girilen sayinin asal sayi olup olmadığı bilgisi

Merhabalar,

kullanıcıdan girilen sayinin asal olup olmadığını ekrana veren programı yazıyorum.

sayi=int(input("sayi gir:"))
for bolen in range (2,sayi):
    if(sayi%bolen==0):
        print("sayi asal değildir")
        break
    if sayi<2:
        print("sayi asal değildir")
        break
else:
    print("sayi asaldır") 
  1. soru : Yukarıda göründüğü şekilde “for” döngüsü içerisinde “if” mevcut. ancak burada “else”
    “if” girintisinin içinde değil. mantığını çok kavrayamadım. “if” girintisinde olmalı diye
    düşünüyorum. (2. if yerine elif yazdığımda program hata veriyor.)

2.soru : Programa baktığımız zaman 2 den daha küçük bir değer girdiğimizde “sayi asal
değildir” bilgisini vermesi gerekiyor. Ama “sayi asaldır” uyarısı veriyor. sebebi ne olabilir ?

3.soru: asal sayi olup olmadığı sonucunu verdiği zaman tekrar sayi istesin istiyorum. bunun için
koda nasıl bir ekleme yapmalıyım ?

yardımlarınız için şimdiden teşekkür ederim.

mesela 1 sadece kendisine ve 1 e bölünüyor senin 0 ile 1 in asal olmadığını programam söylemen gerek yada sayi =< yapman gerek

bütün kodu while True: içine alabilirsin sürekli çalıştırmak için

Döngülerden sonra else kullanımının başka bir amacı var. Burada biraz değinilmiş, belgelerde de vardı yanlış hatırlamıyorsam:

1 Beğeni

çünkü range(2,sayi) demişsin 2 den başlayıp ileri doğru kendisine doğru gelmesi lazm 2 den küçük input verrsen de oraya hiç girmez for döngüsünün gireceği eleman 0 olduğu için. bu da

bu sorguya gelmemesiyle sonuçlanr

1 Beğeni

sayi=int(input(“sayi gir:”))
for bolen in range (2,sayi):
if(sayi%bolen==0):
print(“sayi asal değildir”)
break
elif sayi<2:
print(“sayi asal değildir”)
break
else:
print(“sayi asaldır”) [quote=“murat_demirtas, post:1, topic:9757”]
(2. if yerine elif yazdığımda program hata veriyor.)
[/quote]

oraya elif koysan hata vermemesi lazm

Bu bilgilendirme için teşekkürler.
kara kara düşünüyorum saatlerdir neden çalışmıyor diye

o kodda yine if yerine elif koyduğumda çalışmıyor.

EOL while scanning string literal

hatası veriyor

sayi=int(input("sayi gir:"))
if sayi<2:
    print("sayi asal değildir")
    quit()
for bolen in range (2,sayi):
    if(sayi%bolen==0):
        print("sayi asal değildir")
        break
else:
    print("sayi asaldır")

bu şekilde bir çözüm bulabildim. burada çok küçük bir problemim kaldı.
“quit()” yerine “break” yazdığım zaman bu sefer hata alıyorum.

sorunları çözdükçe yeni sorunlar çıkıyor :confused:

çok teşekkür ederim, bu bilginin çok faydası oldu.

Hata elif’den kaynaklı değil. Bu hataları arama motorunuza yazsanız çözüm karşınıza çıkar aslında.

break’ı döngü dışında kullanmanın bir anlamı yok, kullanmak da yasak.

1 Beğeni