OriginalGriff
Ваш подход-это нерафинированный метод "грубой силы", который использует вложенные циклы. Таким образом, код внутри всех трех циклов выполняется 1000 раз для c, который выполняется 1000 раз для b, который выполняется 1000 раз для a: это означает, что для вычисления количества раз первый цикл выполняется 1000 раз для b. if
тест выполняется просто, просто мультиполь 1000 на 1000 на 1000: 1,000,000,000 - один миллиард раз. Независимо от того, насколько быстр ваш процессор, независимо от того, насколько быстр код внутри всех трех циклов, это займет значительное время. И если он найдет результат с первой попытки - чего он не сделает, но потерпите меня - он все равно сделает оставшиеся 999 999 999 итераций, прежде чем закончит.
Подумайте лучше об алгоритме: есть ли способ значительно уменьшить количество значений? Ну да. Для начала вы можете исключить внутренний цикл, потому что вы знаете, что a + b + c = 1000, следовательно, c = 1000 - (a + b). Для каждой комбинации a и b C-это фиксированное значение, так что вам вообще не нужно зацикливаться! Внезапно вы получаете 1 000 000 тестов, и они становятся проще. Добавьте код для выхода, если вы найдете правильный результат, и это отбросит больше циклов.
И это до того, как вы начнете использовать реальные формулы для ее решения: Пифагорейская тройка - Википедия[^]
Серьезно - это ваше домашнее задание, а не наше: отбросьте подход грубой силы и подумайте о более разумных решениях. А самое быстрое решение абсолютно простое:
print "375^2 + 200^2 = 425^2\n"
Но это не даст тебе никаких отметок. :смеяться: