Python тройка чисел - PullRequest
       0

Python тройка чисел

0 голосов
/ 14 января 2020

Я хотел бы написать программу для пифагорейского триплета. Программа для чисел a, b, c возвращает пифагорейские три натуральных числа a1, b1, c1 такие, что a1 >= a, b1 >= b, c1 >= c.

def Triplet(a, b, c):
    a1 = a
    b1 = b
    n = 5
    m = 0
    while True:
        m += 1
        while b1 <= (b + n * m):
            a1 = a
            while a1 <= b1:
                #while c1 > c:
                    c1 = (a1 * a1 + b1 * b1) ** .5
                    if c1 % 1 == 0:
                        return a1, b1, int(c1)
                    a1 += 1
            b1 += 1

print(Triplet(3,4,6)) 

Для ввода: (3, 4, 6), вывод должен быть: (6, 8, 10). Где ошибка?

Ответы [ 2 ]

1 голос
/ 14 января 2020

Если вы измените условие на if c1%1==0 and c1>=c:, тогда проблема будет исправлена.

Я запустил его локально и получил (6, 8, 10)

1 голос
/ 14 января 2020

Проблема в том, что вы закомментировали свой неверный чек для c1 > c, но не заменили его чем-либо.

Если вы просто добавите это условие назад до возврата, оно будет работать:

def Triplet(a,b,c):
    a1=a
    b1=b
    n=5
    m=0
    while True:
        m+=1
        while b1<=(b+n*m):
            a1=a
            while a1<=b1:
                c1=(a1*a1+b1*b1)**.5
                if c1>=c and c1%1==0:
                    return a1,b1,int(c1)
                a1+=1
            b1+=1


print(Triplet(3,4,6))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...