Найти - Пользователи
Полная версия: Пифагоровы тройки
Начало » Python для новичков » Пифагоровы тройки
1
Horrendous
Дали задание найти пифагоровы тройки с введённым ограничением.
Я нашёл их но сам способ нахождения состоит из трёх циклов и это сильно загружает прогу и если ввести значение 300 то прога виснет. Мне надо найти именно примитивные тройки а не все что есть.
Так вот можно ли как то разгрузить эту обработку что бы нагрузка меньше была.
rami
Блок кода “Нахождение пифагоровых троек” лучше переписать так:
 # Нахождение пифагоровых троек
    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])

Если краткие пояснения к коду не понятны, могу пояснить.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB