a + b + c = 1000 이 되는 피타고라스 수

사이트 이름 - 문제 9번

세 자연수 a, b, c 가 피타고라스 정리 a^2 + b^2 = c^2 를 만족하면 피타고라스 수라고 부릅니다 (여기서 a < b < c ). 예를 들면 3^2 + 4^2 = 9 + 16 = 25 = 5^2이므로 3, 4, 5는 피타고라스 수입니다.

a + b + c = 1000 인 피타고라스 수 a, b, c는 한 가지 뿐입니다. 이 때, a × b × c 는 얼마입니까?

해결 방법

이 문제의 (내가 느낀) 함정은 3^2 + 4^2 = 9 + 16 = 25 = 5^2 의 제곱이 같다는 예제 자체였다. 처음에는 3^2 + 4^2 그 다음은 4^2 + 5^2 ... 처럼 순차적으로 생각을 했기 때문이다.

하지만 2의 제곱부터 뒤에 나오는 숫자에는 뭐가 되든 될 수가 있다. 즉 2중 반복문으로 앞의 2가 2일 동안 뒤의 숫자는 증가할 수 있는 것이다.

def pythagoras(a, b):
    if b < a:
        a, b = b, a

    temp1 = (a ** 2) + (b ** 2)
    temp2 = int(temp1 ** 0.5)

    if a < b < temp2 and temp1 == (temp2 ** 2) and (a + b + temp2) == 1000:
		        return a, b, temp2, a * b * temp2

    return False


for i in range(2, 500):
    for j in range(i + 1, 999):
        num = pythagoras(i, j)

        if num != False:
            print(num)
            break

'''
답은 31875000
a = 200
b = 375
temp2(c) = 425
'''

좀 더 쉬운 방법이 있을듯 한데 현재로서는 떠오르는게 없다.

+ Recent posts