View

반응형

 

알고리즘 분류: 수학, 구현, 정수론

문제 링크: https://www.acmicpc.net/problem/9506

 

9506번: 약수들의 합

어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.

www.acmicpc.net

 

 

【 풀이 】

 

수를 하나 입력받고, 그 수의 약수들의 합이 입력 받은 수와 일치하면 그 합을 출력하는 문제이다.

 

숫자 n을 입력받고, 1부터 n까지 숫자를 돌려가면서 n과 나누어 떨어지는 수가 있다면 배열에 저장한다.

그 후 배열에 저장된 수의 합을 구하고, n과 같은지 다른지 조건문으로 예제와 같이 출력하면 된다.

 

 

 

【 코드 】

 

#include<iostream>
#include<vector>
using namespace std;

int main(void)
{
	while (1)
	{
		vector<int>measure;
		int sum = 0;
		int n;
		cin >> n;
		if (n == -1)
			break;
		for (int i = 1; i < n; i++)
			if (n % i == 0)
				measure.push_back(i);
		for (int i = 0; i < measure.size(); i++)
			sum += measure[i];
		if (n == sum)
		{
			cout << n << " = ";
			for (int i = 0; i < measure.size(); i++)
			{
				if (i == measure.size() - 1)
					cout << measure[i];
				else
					cout << measure[i] << " + ";
			}
			cout << '\n';
		}
		else
			cout << n << " is NOT perfect.\n";
	}
	return 0;
}

 

728x90
반응형
Share Link
reply
250x250
반응형
«   2024/10   »
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