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