Уведомления

Группа в Telegram: @pythonsu

#1 Март 3, 2019 14:59:51

Horrendous
Зарегистрирован: 2019-02-10
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Пифагоровы тройки

Дали задание найти пифагоровы тройки с введённым ограничением.
Я нашёл их но сам способ нахождения состоит из трёх циклов и это сильно загружает прогу и если ввести значение 300 то прога виснет. Мне надо найти именно примитивные тройки а не все что есть.
Так вот можно ли как то разгрузить эту обработку что бы нагрузка меньше была.

Отредактировано Horrendous (Март 3, 2019 15:26:35)

Прикреплённый файлы:
attachment 321.py (1,9 KБ)

Офлайн

#2 Март 4, 2019 08:35:52

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Пифагоровы тройки

Блок кода “Нахождение пифагоровых троек” лучше переписать так:

 # Нахождение пифагоровых троек
    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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version