본문 바로가기
프로그래밍/C programming

c언어 1~1000사이에 있는 수에 대해 암스트롱 수를 구하는 프로그램(각 자리 수에 세제곱의 합이 그 자신과 같아지는 수)

by 졸린이 2020. 6. 16.
반응형

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//1~1000사이에 있는 수에 대해 암스트롱 수 구하기(각 자리 수에 세제곱의 합이 그 자신의 수와 같아 지는 수)
//371 = 3^3(27) + 7^3(343) + 1^3(1)
#include <stdio.h>
#define RANGE 1000
 
main() {
    int num, remain, total;
 
    for (int i = 1; i <= RANGE; i++) {
        total = 0;
        num = i;
        while (1) {
            if (num == 0) //계산 완료후에 while()문 벗어나기
                break;
            remain = num % 10//10으로 나눠 1의자리수 부터 계산한다.
            total += remain * remain * remain; //세제곱
            num /= 10//10으로 나눠 몫만 num에 넣어서 끝자리 수를 버린다.
        }
        if (i == total)
            printf("%d\n", i);
    }
}
cs


9행 for문으로 1~1000사이의 수를 검사한다.

15행 나머지 연산으로 가장 끝자리 수 하나를 꺼내온다.

16행 가져온 수를 세제곱

17행 다음 수를 계산하기 위해 10으로 나눠 몫만 취해서 끝자리 수를 버린다.

19~20행 암스트롱 수라면 출력


반응형

댓글