aboutsummaryrefslogtreecommitdiff
path: root/challenge-020/paulo-custodio/c/ch-2.c
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);
}