본문으로 바로가기
728x90
반응형

[21번 문제]


n의 약수들 중에서 자신을 제외한 것의 합을 d(n)으로 정의했을 때,
서로 다른 두 정수 ab에 대하여 d(a) = b 이고 d(b) = a 이면 
ab는 친화쌍이라 하고 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
반응형