Çö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: 111
Çö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.
Python:
sayi = int(input('bir sayi girin:'))

if sayi<2:
    print('En kucuk asal sayi 2dir')

for i in range (2, int(sayi/2)):
    if i<(sayi/2):
        if sayi%i==0:
            print('sayi asal degildir')
            break
    else:
        print('sayi asaldir')
        break

Sizin yazdiginiz kod daha i = 2 oldugunda direk donguden cikiyor yani i hiçbir zaman 3 olmuyor. Cunku siz if i%2==0 kosulu saglanmazsa else deyip alttaki yeri cagiriyorsunuz. Bu yuzden sizde sayinin 2'ye bolundugu cift olan tum sayilarda asal degildir yazisi cikarken, tek olan butun sayilarda asaldir yazisi cikacak.

Kendi yazdigim kodda sayi/2 dememim sebebi hiçbir sayi kendinin yarisindan buyuk bir sayiya bolunemez. Bunu yaptığımizda ornegin 15 sayisini girdigimizde 8'den 15 sayisina kadar gereksiz sayilara bakmiycak.
 
Son düzenleme:
Python:
asal = True
sayi = int(input("Sayıyı giriniz: "))

for i in range(2, sayi):
    if (sayi % 2 == 0):
        asal = False
        break
    
if (asal): print("Asal")
else: print("Asal Değil")
 
3 olmuyor derken kısmını anlamadım. Ben sayıyı 2'ye bölmüyorum. Mod 2'sini alıyorum.
Python:
asal = True
sayi = int(input("Sayıyı giriniz: "))

for i in range(2, sayi):
    if (sayi % 2 == 0):
        asal = False
        break
   
if (asal): print("Asal")
else: print("Asal Değil")
Cevap için teşekkürler ama ben asalmı = true değeri olmadan yapmak istiyorum. Yapamaz mıyım?
 
3 olmuyor derken kısmını anlamadım. Ben sayıyı 2'ye bölmüyorum. Mod 2'sini alıyorum.

Cevap için teşekkürler ama ben asalmı = true değeri olmadan yapmak istiyorum. Yapamaz mıyım?
Neden o olmadan yapacaksın ki? Boolean veri tipi kullanmadan böyle bir program yapmak mantıksız olur.

Yine de ısrar edersen şöyle olabilir:
Python:
sayi = int(input("Sayıyı giriniz: "))

for i in range(2, sayi):
    if (sayi % 2 == 0):
        print("Asal Değil")
        exit()

print("Asal")
 
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.
 
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.
Pardon 2 yerine i yazılmalı. Dalgınlıktan 2 yazmışım.

Python:
sayi = int(input("Sayıyı giriniz: "))

if sayi < 2:
    print("Asal Değil")
    exit()

for i in range(2, sayi):
    if (sayi % i == 0):
        print("Asal Değil")
        exit()

print("Asal")

Doğru kod bu şekilde olmalı.
 
Pardon 2 yerine i yazılmalı. Dalgınlıktan 2 yazmışım.

Python:
sayi = int(input("Sayıyı giriniz: "))

if sayi < 2:
    print("Asal Değil")
    exit()

for i in range(2, sayi):
    if (sayi % i == 0):
        print("Asal Değil")
        exit()

print("Asal")

Doğru kod bu şekilde olmalı.
Teşekkürler. Ben de buna benzer bir şey yapmışım :D ama nedense benimki çalışmamıştı.
 
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.
 
Çözüm

Yeni konular

Geri
Yukarı