Python Fazla çıktı alma sorunu

ItsWisehan

Centipat
Katılım
14 Haziran 2023
Mesajlar
50
Daha fazla  
Sistem Özellikleri
Ryzen 7 7700X 8-Core 4.5GHz
Asus PRIME B650M-A WIFI II 6400MHz
ASUS Dual GeForce RTX 4060 Ti OC 8GB GDDR6
Team T-Force Vulcan Black 16 GB 5600 MHz DDR5
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ı