Q9_Special Pythagorean triplet

들어가기

오늘 살펴볼 문제는 Q9 입니다.
https://projecteuler.net/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 whicha+b+c= 1000.
Find the product abc.

합이 1000이 되는 피타고라스의 세 수가 하나 존재하는데 이를 구하고 이 세수의 곱을 계산하는 문제입니다.
이 문제의 경우 만족하는 코드를 구성하는 것은 어렵지 않을 것 같습니다.
오늘은 정수론을 포함한 수학 이론을 이용하여 구하는 것도 해보겠습니다.


예시코드

이번에도 김쌤의 코드를 약간 수정한 예시를 소개합니다.

for a in range(1,334):
    for b in range(a+1,500):
        c = 1000-a-b
        if a**2 + b**2 == c**2:
            print("세 수는 {},{},{}이다. ".format(i,j,k))
            print(f"곱은 {i*j*k}이다.")
# 세 수는 200,375,425이다.
# 곱은 31875000이다.
  • 두 개의 for문으로 구성되어 있습니다.
  • $a<b<c$이므로 a는 1부터 333, b는 a+1부터 499까지만 보아도 충분합니다.
  • 문자열을 포메팅하는 두가지 방법을 사용하였습니다. 두번째 print(f"곱은 {i*j*k}이다.")이 가장 최근에 나온 방법인데 쓰기 편한 방법인 것 같습니다.
  • 세 수는 200,375,425이네요. 비교적 간단한 문제입니다.

수학적 접근

이 문제의 경우 수학적으로 접근하여 계산할 수도 있습니다. (작성중)
/

마무리

Leave a Comment