Форум сайта python.su
0
Дали задание найти пифагоровы тройки с введённым ограничением.
Я нашёл их но сам способ нахождения состоит из трёх циклов и это сильно загружает прогу и если ввести значение 300 то прога виснет. Мне надо найти именно примитивные тройки а не все что есть.
Так вот можно ли как то разгрузить эту обработку что бы нагрузка меньше была.
Отредактировано Horrendous (Март 3, 2019 15:26:35)
Прикреплённый файлы:
321.py (1,9 KБ)
Офлайн
72
Блок кода “Нахождение пифагоровых троек” лучше переписать так:
# Нахождение пифагоровых троек for i in range(3, a): #начинаем с трёх for j in range(i+1, a, 2): #начинаем с i+1, с шагом 2 if gcd(i, j) == 1: #проверяем, если не выполняется, нет смысла пробегать третий цикл for g in range(j + j%2 + 1, a, 2): #если j четное, начинаем с j+1, если нечётное с j+2, шаг 2 if 1 == gcd(i, g) == gcd(g, j): #проверяем взаимную простоту гипотенузы и катетов if i*i+j*j == g*g: s1.append([i, j, g]) break #если нашли подходящую гипотенузу, прерываем третий цикл
# Сортировка троек по возврастанию по последнему значению s3 = sorted(s1, key=lambda x: x[2])
Отредактировано rami (Март 4, 2019 11:57:35)
Офлайн