피타고라스 삼중항(Pythagorean triplets)은 a² + b² = c² 관계를 만족하는 세 개의 양의 정수 조합을 말합니다. 주어진 범위 내에서 이러한 삼중항을 모두 찾아야 할 때, 삼중항 값을 계산해 주는 메서드를 정의하여 해결할 수 있습니다.
이 프로그램은 유클리드 공식(a = m² − n², b = 2mn, c = m² + n²)을 활용하여 효율적으로 삼중항을 생성합니다. 아래는 그 구현 예시입니다.
예제 코드
def pythagorean_triplets(limits) :
c, m = 0, 2
while c < limits :
for n in range(1, m) :
a = m * m - n * n
b = 2 * m * n
c = m * m + n * n
if c > limits :
break
print(a, b, c)
m = m + 1
upper_limit = 15
print("The upper limit is :")
print(upper_limit)
print("The Pythagorean triplets are :")
pythagorean_triplets(upper_limit)
실행 결과
The upper limit is :
15
The Pythagorean triplets are :
3 4 5
8 6 10
5 12 13
코드 설명
피타고라스 삼중항의 각 값(a, b, c)을 계산하고 저장하는 변수를 포함하는 메서드를 정의합니다.
메서드 외부에서 탐색 범위를 결정하는 정수(상한값)를 정의합니다.
해당 정수를 인자로 전달하며 메서드를 호출합니다.
계산된 삼중항 결과가 콘솔에 출력됩니다.
동작 원리
위 예제에서 상한값이 15일 때, (3, 4, 5), (6, 8, 10), (5, 12, 13) 세 개의 삼중항이 발견됩니다. 각 조합은 피타고라스 정리를 만족합니다. 예를 들어 3² + 4² = 9 + 16 = 25 = 5² 입니다. while 루프는 c 값이 상한값을 넘지 않는 동안 반복되며, 내부 for 루프는 각 m 값에 대해 가능한 모든 n 조합을 검사합니다. c가 상한값을 초과하면 break 문으로 내부 루프를 종료하고 다음 m 값으로 넘어갑니다.