blob: 64a567eade14da45744f4f05d4b21a68ba65b8cb (
plain)
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
32
33
34
35
36
37
38
|
/*
Challenge 020
Task #2
Write a script to print the smallest pair of Amicable Numbers. For more
information, please checkout wikipedia page.
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int sum_proper_divisors(int n) {
int sum = 0;
for (int d = 1; d < n; d++)
if (n % d == 0)
sum += d;
return sum;
}
void amicable_pair(int n, int* pn, int* psum) {
while (true) {
n++;
int sum = sum_proper_divisors(n);
if (sum_proper_divisors(sum) == n && n < sum) {
*pn = n;
*psum = sum;
return;
}
}
}
int main() {
int n = 1;
int sum = 0;
amicable_pair(n, &n, &sum);
printf("(%d,%d)\n", n, sum);
}
|