일상 코딩
[C++] 진약수의 합 ex) 20의 진약수의 합 "1 + 2 + 4 + 5 + 10 = 22" 출력 본문
C++/코딩테스트 대비
[C++] 진약수의 합 ex) 20의 진약수의 합 "1 + 2 + 4 + 5 + 10 = 22" 출력
polarcompass 2021. 10. 8. 20:11728x90
#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
'C++ > 코딩테스트 대비' 카테고리의 다른 글
[C++ / 아마존 기출] 문자열 제어 및 탐색, 숫자만 출력 (0) | 2021.10.13 |
---|---|
[C++] 문자열 제어, 주민등록번호를 통한 나이 및 성별 출력 (0) | 2021.10.13 |
[C++] 나이 차이, min, max 실시간 갱신 (0) | 2021.10.08 |
[C++] 자연수의 합 ex) "3 + 4 + 5 + 6 + 7 = 25" 형태로 출력 (0) | 2021.10.07 |
[C++] 1부터 N까지 M의 배수합 (0) | 2021.10.07 |