250x250
Notice
Recent Posts
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
관리 메뉴

일상 코딩

[C++] 진약수의 합 ex) 20의 진약수의 합 "1 + 2 + 4 + 5 + 10 = 22" 출력 본문

C++/코딩테스트 대비

[C++] 진약수의 합 ex) 20의 진약수의 합 "1 + 2 + 4 + 5 + 10 = 22" 출력

polarcompass 2021. 10. 8. 20:11
728x90
#include<iostream>
using namespace std;
int main(){
    int n, i, sum = 1;
    cin >> n;

    cout << 1;
    for(i = 2; i < n; i++){
        
        if ( n % i == 0 ){
            sum += i;
            cout << " + " << i;
        }
    }
    cout << " = " << sum << endl;

    return 0;
}

진약수란 자신을 제외한 약수를 뜻한다.

만약, 자연수 20의 진약수의 합을 구한다면

1 + 2 + 4 + 5  + 10 = 22 가 되게 된다.

우선 첫번째로 '1'을 출력해준다.

마지막 약수가 '10'이긴 하지만 이것을 일반화할때에는 어떤 숫자가 약수가 될지 모르기 때문에

" + 2" 같은 형태로 반복문을 돌려주어 마지막 숫자에는 뒤에 아무것도 안붙은 형태로 만들어준다.

1은 항상 포함이므로 sum 변수 선언시 1로 초기화 해준다.

마지막은 반복문을 돌면서 합한 sum 변수와

" = "를 차례대로 출력해준다.

728x90