Я сделал программу, позволяющую пользователям вводить максимально возможную гипотенузу прямоугольного треугольника, и моя программа будет перечислять список всех возможных сторон треугольников. Проблема в том, что программа навсегда запускается, когда я ввожу значение, такое как 10000. Любые предложения о том, как повысить эффективность программы?Чрезвычайно неэффективный код python
Код:
largest=0
sets=0
hypotenuse=int(input("Please enter the length of the longest side of the triangle"))
for x in range(3,hypotenuse):
for y in range(4, hypotenuse):
for z in range(5,hypotenuse):
if(x<y<z):
if(x**2+y**2==z**2):
commonFactor=False
for w in range(2,x//2):
if (x%w==0 and y%w==0 and z%w==0):
commonFactor=True
break
if not(commonFactor):
print(x,y,z)
if(z>largest):
largest=z
sets+=1
print("Number of sets: %d"%sets)
print("Largest hypotenuse is %d"%largest)
Спасибо!
В нотации Big O ваш код ужасен, его как 'n^4', вы используете слишком много для циклов, в которых вы должны быть умными. – enginefree
Звучит как идеальная возможность сыграть с [профилированием!] (Http://docs.python.org/2/library/profile.html) –
«самая большая возможная гипотенуза» и «перечислить список всех возможных сторон треугольники «Является ли моя математика совершенно неправильной или действительно существует бесконечное количество прямоугольного треугольника, имеющего гипотенузу