티스토리 뷰

반응형

직각 삼각형은 밑변 a와 높이 b, 빗변 c로 이루어져 있다.

a^2 + b^2 = c^2라는 식이 성립한다.

 

각 변이 100 이하인 직각삼각형의 경우를 구해보자.

 

예를 들어

a = 3, b = 4, c = 5 ( 9 + 16 = 25 )

a = 6, b = 8, c = 10 ( 36 + 64 = 100 )

가 있다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
int main(void)
{
    for (int a = 1; a <= 100; a++)
    {
        for (int b = 1; b <= 100; b++)
        {
            for (int c = 1; c <= 100; c++)
            {
                if ((a * a + b * b) == c * c)
                    printf("%d %d %d\n", a, b, c);
            }
        }
    }
    
    return 0;
}
 
cs

 

 

 

 

  - 결과  

.. 등등 ..

 

 

 

  - 설명  

중첩 반복문을 활용한 직각 삼각형 찾기이다.

처음에는 a = 1, b = 1, c = 1

그 다음에는 a = 1, b = 1, c = 2

....

a = 1, b = 1, c = 100

a = 1, b = 2, c = 1

와 같은 방식으로

c - b - a 순으로 100까지 쭉 반복한다.

 

하지만 {3, 4, 5}, {4, 3, 5} 나{6, 8, 10}, {8, 6, 10} 과 같은

동일한 삼각형이 출력되는 문제가 있다.

어떻게 하는 것이 좋을까?

 

(a*a + b*b) == c*c 식이 있는

if 문에 a < b 조건을 하나 추가해주면 된다.

 

 

11
if ((a < b) && (a * a + b * b) == c * c)
cs

 

 

이렇게 해주면 원래

a, b, c가 100 이하인 조건에서

피타고라스의 수(직각 삼각형의 수)가

104개로 나왔으나,

 

 

 

 

현재는 52개가 되어,

중복된 수가 제외됨을 확인할 수 있다.

 

 

 

 

  - 한마디  

중복을 제거하는 식이 생각보다 간단하였으나

파이썬을 활용하면 한 줄로 활용이 가능하다..

고 생각하니 아쉬웠다.

반응형
댓글
반응형
Recent Post.
Recent Reply.
Thanks for comming.
오늘은
명이 방문했어요
어제는
명이 방문했어요