Python Fazla çıktı alma sorunu

ItsWisehan

Picopat
Katılım
14 Haziran 2023
Mesajlar
43
Daha fazla  
Cinsiyet
Erkek
Python:
def asalSayilariBul(sayi1, sayi2):
    for sayi in range(sayi1, sayi2+1):
        if sayi > 1:
            for i in range(2, sayi):
                if (sayi % i == 0):
                    break
                else:
                    print(sayi)
                   
sayi1 = int(input("sayı 1: "))
sayi2 = int(input("sayı 2: "))

asalSayilariBul(sayi1, sayi2)

Kod budur. Çıktı alırken bazı sayıları 3-5 kere yeniden yazıyor sorun nedir bu? Neden oluyor? Yardımcı olursanız sevinirim.
 
Son düzenleyen: Moderatör:
Her asal sayıyı bulduğunuzda print(sayi) ifadesini çağırıyor. Bu sefer her asal sayı için çalıştığından dolayı aynı asal sayıyı tekrar tekrar yazdırıyor. Bunun yerine asal sayıları bulduktan sonra bunları bir listeye ekleyip döngü bittiğinde bu listeyi yazdır.

Python:
def asalSayilariBul(sayi1, sayi2):
    asal_sayilar = []
    for sayi in range(sayi1, sayi2+1):
        if sayi > 1:
            for i in range(2, sayi):
                if (sayi % i == 0):
                    break
            else:
                asal_sayilar.append(sayi)
    print("Asal Sayılar:", asal_sayilar)

sayi1 = int(input("sayı 1: "))
sayi2 = int(input("sayı 2: "))

asalSayilariBul(sayi1, sayi2)
 
Anladığım kadarıyla iki sayı arasındaki asal sayıları tespit etmeye çalışıyorsun.

2'den sayıya kadar birer birer her şeye bölüyorsun, fakat bir sonraki sayı için yine aynı sayıları böleceksin ve her böldüğünde eğer kalan 0 değilse yazdırıyorsun. Dolayısıyla bazı sayıları arka arkaya üç beş kere görme durumun oluyor. 5-7 arası için kodun mesela;

5 5 5 7 7 7 7 olacak.

Mantığın hatalı yani azıcık.
 
Python:
def asalSayilariBul(sayi1, sayi2):
    for sayi in range(sayi1, sayi2+1):
        if sayi > 1:
            for i in range(2, sayi):
                if (sayi % i == 0):
                    break
                else:
                    print(sayi)
                  
sayi1 = int(input("sayı 1: "))
sayi2 = int(input("sayı 2: "))

asalSayilariBul(sayi1, sayi2)

Kod budur. Çıktı alırken bazı sayıları 3-5 kere yeniden yazıyor sorun nedir bu? Neden oluyor? Yardımcı olursanız sevinirim.
5 ve 10 girdiğimizi düşünelim. şuanda sayi = 5, i = 2 if döngüsünde 2ye bölümünden kalan 0 olmadığı için else'e gidip 5'i printleyecek. Sonrasında sayi yine 5, i bu sefer 3 oldu, if döngüsünde 3e bölümünden kalan 0 olmadığı için else'e gidip 5'i tekrar printleyecek. Hatta i en son 4 değerini alıcak ve 2,3 ve 4 yani toplam 3 kere 5'i printleyecek, deneyebilirsin.
 

Geri
Yukarı