문제
자연수 N이 주어지면 자연수 N의 진약수의 합을 수식과 함께 출력하는 프로그램을 작성하세 요.
💡 입력설명
첫 줄에 자연수 N이 주어집니다. (3<N<=100)
💡 출력설명
첫 줄에 더하는 수식과 함께 합을 출력합니다.
💡 입력예제
20
💡 출력예제
1 + 2 + 4 + 5 + 10 = 22
코드
최종 풀이
#include <iostream>
using std::cin;
using std::cout;
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;
return 0;
}
설명
1은 약수에 속하므로 1을 먼저 출력한다.
진약 이므로 n을 제외한 2부터 n - 1까지 반복하는 for문을 작성하고 입력받은 n을 순서대로 나눴을 때 나머지가 0에 해당하는 약수를 + 와 함께 출력한다.
마지막으로 for문에 나온 이후 =과 sum을 같이 출력하도록 한다.
배운 점
1. 진약수의 개념을 알게되었다.
2. for문 조건부에 변수를 선언하지 않고 전역변수로 놓는 것이 for문 밖에서도 해당 변수를 이용할 수 있다.
해당 내용은 김태원님의 'it 취업을 위한 알고리즘 문제풀이' 강의를 듣고 작성한 글입니다.