백준 약수들의 합 C++

박원빈·2024년 4월 25일

알고리즘 🤔

목록 보기
1/26
post-thumbnail


소스코드 + 문제풀이

#include <iostream>
#include <string>
using namespace std;

int main() {
    int n;
    // n이 완전수인지 판단하기 위해 약수를 전부 더해 저장하는 변수 선언
    int count = 0;
    // 완전수라면 약수들을 출력해주기 위해 문자열 선언
    string log = "";
    // 무한반복
    while (1) {
        // n 입력 받고,
        cin >> n;
        
        // 만약 n의 입력이 -1이면 무한반복 나가기
        if (n == -1) {
            break;
        }
        
        // 약수는 n보다 작으니까, n보다 작을때까지 반복
        for (int i = 1; i < n; i++) {
            // 만약 i가 약수라면
            if (n % i == 0) {
                // count에 더해주고,
                count += i;
                // 출력해주기위해 문자열에 약수를 추가
                log += to_string(i);
                // 마지막 약수라면 " + " 문자열 추가 안함
                if (n / i != 2) {
                    log += " + ";
                }
            }
        }
        
        // n이 완전수라면
        if (count == n) {
            cout << n << " = " << log << "\n";
        } else {
            cout << n << " is NOT perfect." << "\n";
        }
        
        // 변수들 값 초기화
        count = 0;
        log = "";
    }
}

0개의 댓글