반응형
이번 문제는 합이 1,000인 피타고라수 수 구하기입니다.
피타고라스 수의 일반항은 이미 잘 나와 있어서, 그 공식을 이용하면, 손쉽게 프로그램으로 만들 수 있습니다.
을 이용해서 피타고라스 쌍을 구하도록 합니다. G(s, t) = 1 인 수를 구하면, 원래 배수가 아닌 피타고라스 쌍을 얻을 수 있지만, 배수인 쌍으로도 나올 수 있기 때문에, 여기서는 s > t 라는 조건만 걸어서 제작했습니다.
단 무한대로 검사할 수 없으므로, 프로그램에서는 x+y+z <= 1000 인 조건을 두어서 종료할 수 있도록 하였습니다.
#include <stdio.h> int main() { int s, t; int n = 1000; for( s = 2 ; s*s < n/2 ; s++ ) { for( t = 1 ; t < s ; t++ ) { int x = 2*t*s; int y = s*s - t*t; int z = s*s + t*t; if( x + y + z == n ) { printf("%d^2 + %d^2 = %d^2\n", x, y, z); printf("Ans = %d\n", x*y*z); } } } }
728x90
'Programming > Project Euler' 카테고리의 다른 글
#11 : 그리드에서 가장 큰 곱수 구하기(Brute Force) (0) | 2014.12.28 |
---|---|
10. 프로젝트 오일러 #10 : 2백만 이하의 소수의 합 구하기 (0) | 2014.12.24 |
8. 프로젝트 오일러 #8 : 가장 큰 곱하기 수 구하기. (0) | 2014.12.23 |
7. 프로젝트 오일러 #7 : 10,001번째 소수 찾기 (0) | 2014.12.23 |
6. 프로젝트 오일러 #6 : 합의 제곱과 제곱의 합 차 구하기. (0) | 2014.12.22 |
댓글