sayı = 6
toplam = 0
for i in range(1, sayı):
if (sayı % i == 0):
toplam += i
if toplam == sayı:
print("mükemmel sayı:", toplam)
bu kod 6 sayısının mükemmel sayı olup olmadığını kontrol ediyor ve sorunsuz çalışıyor fakat
1’den 1000’e kadar olan sayıların mükemmel olup olmadığını kontrol etmek istiyorum o yüzden kod’a bir for döngüsü daha ekliyorum
sayı = 1001
toplam = 0
for j in range(1,sayı):
for i in range(1, j):
if (j % i == 0):
toplam += i
if toplam == j:
print("mükemmel sayı:", toplam)
ve böyle bir kod yazdım fakat çalışmıyor yardımcı olur musunuz ?
Parametre olarak verilen bir sayinin mukemmel olup olmadigi bilgisini donduren bir fonksiyon yazip yukarida 6 ile, asagida da bilumum j degerleriyle cagirman lazim.
Toplam her defasında tekrar sıfır olarak ayarlanmalıdır. Senin programında 1 değeri için mükemmel sayı kontrolu yapıldığında toplam değeri 1 olur ve ilk if koşulunda 1 sayısının mükemmel olduğu saptanır. Ancak 2 değeri için kontrol yapılmak istendiğinde senin toplam değeri 1 olarak başlar ve 2 için kontrol yaptığında if koşuluna gelindiğinde toplamın 3 değerini alması gerekirken 4 değerini alır çünkü ilk kontrolden/ donguden sonra toplam değeri 0 yapılmamıştır. Bunun için toplam = 0 satırını ilk döngünün içerisine tanimlaman gerekir.