Project Euler - Problem 9.


A Pythagorean triplet is a set of three natural numbers, a < b < c, for which,

a2 + b2 = c2

For example, 32 + 42 = 9 + 16 = 25 = 52.

There exists exactly one Pythagorean triplet for which a + b + c = 1000.
Find the product abc.



- 피타고라스의 수는 a < b < c이고 a^2 + b^2 = c^2의 조건을 갖는 수이다. 예를 들면, 3^2 + 4^2 = 9 + 16 = 25 = 5^2와 같다. a + b + c = 1000이 되는 피타고라스 수는 하나밖에 없다. 이 abc를 곱하면 몇인가?




이런식으로 2중 루프를 돌려 무식하게 풀 수도 있습니다.


하지만, 식을 전개하면서 우리가 원하는 해를 풀어나간다면 루프를 줄일 수 있습니다.


a + b + c = 1000 이면,

b + c = 1000 - a

b = (1000 - a) - c

1000 - a를 x라고 하면

b = x - c

가 됩니다.


이것을 피타고라스 수에 대입하면


a^2 + b^2 = c^2

a^2 + (x - c)^2 = c^2

a^2 + x^2 - 2x + c^2 = c^2

a^2 + x^2 = 2xc

(a^2 + x^2) / 2x = c

라는 결론을 낼 수 있고,

x = 1000 - a 이기 때문에 a를 구할 수 있다면 c, b를 구할 수 있습니다.


따라서 a를 1부터 1000까지 반복하며 식을 대입한다면 해를 구할 수 있습니다.




새삼 다시 수학의 중요성을 느끼고 있습니다.

Posted by 긍정왕오킹