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