본문 바로가기
Programming Language/C C++

[알고리즘 문제풀이] 3. 진약수의 합★

by 9루트 2022. 1. 3.

진약수란?

원래 약수 중에서 자기자신을 제외한 것

6의 약수는 1, 2, 3, 6인데 진약수는 1, 2, 3

 

 

 

 이 문제는 마지막 약수 일 때 "숫자 +"형식이 아닌 "숫자 = 합" 형식으로 출력하는 데 고민을 했다.

N의 약수 중에 가장 큰 수를 구분해줘야 했다.

 

그래서

 

"숫자 +"을 출력하는 것이 아니라

1을 먼저 출력하고

"+ 숫자" 형식으로 출력하는 것이 좋다.

 

#include <iostream>
using namespace std;

int main(){
	int n, i, sum = 0;
	cin >> n;
	
	cout << "1";
	sum = sum + 1;
	
	for( i = 2; i < n; i++){
		if(n % i == 0){
			cout << " + "<< i;
			
			sum = sum + i;
		}
	}
	
	cout << " = " << sum;
	return 0;
}