728x90
문제
페르마의 마지막 정리는, a, b, c가 0이 아닌 정수이고, n이 2보다 큰 자연수 일 때,
an = bn + cn을 만족하는 자연수 a, b, c가 존재하지 않는다는 정리이다.
이 정리는 아직 증명되지 않았다.
하지만, 완전 세제곱 방정식 a3 = b3 + c3 + d3을 만족하는 1보다 큰 자연수를 찾는 것은 어렵지 않다. (123 = 63 + 83 + 103)
이러한 완전 세제곱 방정식과 a ≤ 100을 만족하는 {a, b, c, d}쌍을 모두 찾는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/4690
입력
이 문제는 입력이 없다.
출력
a값이 증가하는 순서대로 아래 출력 형식과 같이 출력한다.
b, c, d도 증가하는 순서로 이루어져야 한다.
a값에 해당하는 b, c, d쌍이 여러 개 존재할 수 있다.
이때는 b 값이 작은 것부터 먼저 출력한다.
아래 출력 예제는 일부분만 나와있다.
예제
# output
Cube = 6, Triple = (3,4,5)
Cube = 12, Triple = (6,8,10)
Cube = 18, Triple = (2,12,16)
Cube = 18, Triple = (9,12,15)
Cube = 19, Triple = (3,10,18)
Cube = 20, Triple = (7,14,17)
Cube = 24, Triple = (12,16,20)
문제 풀이
for a in range(2, 101):
for b in range(2,101):
for c in range(b+1,101):
for d in range(c+1,101):
if a**3 == b**3 + c**3 + d**3:
print(f'Cube = {a}, Triple = ({b},{c},{d})')
if a**3 < b**3 + c**3 + d**3:
break
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90