본문 바로가기
Programming/Project Euler

9. 프로젝트 오일러 #9 : 합이 1,000인 피타고라스 수 구하기

by 작은별하나 2014. 12. 23.
반응형

이번 문제는 합이 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

댓글