def arkadas(x,y):
x_bolenleri_toplami=0
y_bolenleri_toplami=0
for i in range(1,x):
if x % i ==0:
x_bolenleri_toplami+=i
for i in range(1,y):
if y % i ==0:
y_bolenleri_toplami+=i
if x_bolenleri_toplami==y and y_bolenleri_toplami==x:
return True
print(arkadas(220,284)) #True
print(arkadas(222,222)) #None
Eğer iki arkadaş sayı gönderirse fonksiyonun True değerini gönderiyor. Arkadaş sayı olmazlarsa da None değeri geliyor geriye.
Üstad bu hatırlatma için çok teşekkür ederim. Peki bunun gibi birden fazla parametreli fonksiyonları döngülere nasıl uygulayabilirim ? While True kullanarak mı ? Mesela 10 bine kadar bul demiştiniz ya. Şöyle bir şey ekledim aşağıya ama parametre eksik diye hata verdi.
for i in range(1,10001):
for i in range(1,10001):
if arkadas()==True:
print(arkadas())
Onu da denedim ama bir çıktı alamıyorum. Error mesajı bile yok. Kodun son hali bu :
def arkadas(x,y):
x_bolenleri_toplami=0
y_bolenleri_toplami=0
for i in range(1,x):
if x % i ==0:
x_bolenleri_toplami+=i
for i in range(1,y):
if y % i ==0:
y_bolenleri_toplami+=i
if x_bolenleri_toplami==y and y_bolenleri_toplami==x:
return True
for i in range(1,10001):
for h in range(1,10001):
if arkadas(i,h)==True:
print(arkadas(i,h),"Arkadaş sayılardır")
def arkadas(x,y):
x_bolenleri_toplami=0
y_bolenleri_toplami=0
for i in range(1,x):
if x % i ==0:
x_bolenleri_toplami+=i
for i in range(1,y):
if y % i ==0:
y_bolenleri_toplami+=i
if x_bolenleri_toplami==y and y_bolenleri_toplami==x:
return True
for i in range(1,10001):
for h in range(1,10001):
if arkadas(i,h)==True:
print(i,h,"Arkadaş sayılardır")
Program çalışıyor da kod o kadar kötü ki saatler sürüyor:)
Her i değeri için 10bin defa h değerine bakıyor (gereksiz yere)
Ayrıca her i ve h değeri için bölenler toplamına bakıyor (o da gereksiz)
Ayrıca mükemmel sayıları da arkadaş sayı sanıyor. (Örneğin 6 ve 6 )
Kodu mümkün olduğunca gereksiz çalışmalardan arındırmak ve hızlı hale getirmek de senin görevin.