https://www.acmicpc.net/problem/9506
9506번: 약수들의 합
어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.
www.acmicpc.net
풀이
#include <stdio.h>
int main() {
int t;
int total = 0, cnt = 0;
while (1) { // -1 입력전까지 반복
scanf("%d", &t);
int m[10000]={}; // 약수를 저장할 배열, 초기화
if(t==-1) break; // -1일때 종료
// 약수 찾아서 m배열에 저장
for (int j = 1; j < t; j++) {
if (t / j > 0 && t % j == 0) {
m[cnt] = j;
total += j; // 완전수 확인을 위한 total
cnt++;
}
}
if (total == t) { // t가 완전수라면
printf("%d = ", t);
for (int j = 0; j < cnt; j++) {
if (j == cnt - 1) printf("%d", m[j]); // t의 마지막 약수일때
else printf("%d + ", m[j]);
}
}
else printf("%d is NOT perfect.", t); // 완전수가 아닐때
printf("\n");
total = 0; // 초기화
cnt = 0; // 초기화
}
return 0;
}
문제 구성이 귀찮은 문제다.
'코딩 > 백준 문제 (브론즈)' 카테고리의 다른 글
[백준/10798/C언어] 세로읽기 _ 풀이 (0) | 2023.08.22 |
---|---|
[백준/2738/C언어] 행렬 덧셈 _ 풀이 (0) | 2023.08.22 |
[백준/10988/C언어] 팰린드롬인지 확인하기 _ 풀이 (0) | 2023.08.21 |
[백준/11718/C언어] 그대로 출력하기 _ 풀이 (0) | 2023.08.21 |
[백준/1085/C언어] 직사각형에서 탈출 _ 풀이 (0) | 2023.08.19 |