728x90
반응형
[21번 문제]
n의 약수들 중에서 자신을 제외한 것의 합을 d(n)으로 정의했을 때,
서로 다른 두 정수 a, b에 대하여 d(a) = b 이고 d(b) = a 이면
a, b는 친화쌍이라 하고 a와 b를 각각 친화수(우애수)라고 합니다.
예를 들어 220의 약수는 자신을 제외하면 1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110 이므로 그 합은 d(220) = 284 입니다.
또 284의 약수는 자신을 제외하면 1, 2, 4, 71, 142 이므로 d(284) = 220 입니다.
따라서 220과 284는 친화쌍이 됩니다.
10000 이하의 친화수들을 모두 찾아서 그 합을 구하세요.
[코드]
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 | #include "stdafx.h" #include <stdlib.h> #include <iostream> using namespace::std; int ans = 0; int d(int num) { int sum = 0; for (int i = 1; i < num; i++) if (num%i == 0) sum += i; return sum; } int main() { int temp = 0; for (int i = 2; i <= 10000; i++) { temp = d(i); if (((d(i) == temp)&&d(temp)==i ) && temp <=10000 && i!= temp) ans += i; } cout << endl << ans << endl; system("pause"); return 0; } | cs |
728x90
반응형
'Solution > Project Euler' 카테고리의 다른 글
[23/C++] 두 초과수의 합으로 나타낼 수 없는 모든 양의 정수의 합은? (0) | 2018.05.28 |
---|---|
[22/C++] 영문 이름 점수 합계 구하기 (0) | 2018.05.26 |
[20/C++] 100! 의 자리수를 모두 더하면? (0) | 2018.05.26 |
[19/C++] 20세기에서, 매월 1일이 일요일인 경우는 몇 번? (0) | 2018.05.26 |
[18/C++] 삼각형을 따라 내려가면서 합이 최대가 되는 경로 찾기 (0) | 2018.05.26 |