Project Euler 21

Problem 21

  • d(n) の計算は、素直に割り算している。
using System;

class PE021 {
    static int SumProperDivisors(int n) {
        int sum = 0;
        for (int i = 1; i*2 <= n; i++) {
            if (n % i == 0) {
                sum += i;
            }
        }
        return sum;
    }

    static int Calc() {
        int ans = 0;
        for (int a = 2; a <= 10000; a++) {
            int b = SumProperDivisors(a);
            if (a < b && a == SumProperDivisors(b)) {
                // Console.WriteLine("{0} - {1}", a, b);
                ans += a + b;
            }
        }
        return ans;
    }

    static void Main() {
        Console.WriteLine(Calc());
    }
}