Program 8 sayısından sonra yanlış değerler veriyor.Nerede yanlış yaptım acaba?3 tane for döngüsü kullanmam mı sıkıntı çıkarmış?
def oklid():
liste = list()
for a in range(1,101):
for b in range(1,101):
for c in range(1,101):
if c**2 == a**2 + b**2:
liste.append((a,b,c))
elif b **2 == a**2 + c**2:
liste.append((a, b, c))
elif a **2 == b**2 + c**2:
liste.append((a, b, c))
return liste
print(oklid())
Merhaba, bence algoritmada yanlışlık yok ama zannederim aynı çiftleri bir daha bastirmak istemiyorsunuz . Benim çıkarımım bu ama yanlış da olabilir. Problemi anlamama biraz daha yardım edebilir misiniz?
Bu arada anladığım kadarıyla bir implementation yaptım. Belki pythonla haşır neşir olan arkadaşlardan daha iyi implementationlar gelebilir.
def oklid():
oklit_kume = set()
for a in range(1,101):
for b in range(1,101):
for c in range(1,101):
# elemanlar kucukten buyuge
# siralansin ki hem hipotenusu
# bilelim hem de her elemandan
# sadece bir tane bulunsun
tmp = sorted([a, b, c])
if(tmp[0]**2 + tmp[1]**2 == tmp[2]**2):
oklit_kume.add((tmp[0], tmp[1], tmp[2]))
return oklit_kume
# sonuclari sirali olarak bastirmak istersek
res = sorted(list(oklid()))
for i in res:
print(i)
İyi geceler.
Edit:
Algoritma optimize edildi. Artık daha hızlı çalışabilir.
from math import sqrt
def oklid():
oklit_kume = list()
for a in range(1,101):
for b in range(a,101):
g = int(sqrt(a**2 + b**2))
if(g**2 == a**2 + b**2):
oklit_kume.append((a, b, g))
return oklit_kume
for i in oklid():
print(i)
edit2:
Bu linkte güzel bir yöntem daha var
Tamamdır teşekkürler sizin ki daha mantıklı müsait olunca deneyeceğim
1 Beğeni