読者です 読者をやめる 読者になる 読者になる

Project Euler 27

Problem 27

using System;

class PE027 {
    static bool IsPrime(int n) {
        if (n <= 1) return false;
        if (n == 2) return true;
        if (n % 2 == 0) return false;

        for (int i = 3; i*i <= n; i += 2) {
            if (n % i == 0)
                return false;
        }
        return true;
    }

    static void Main() {
        // n^2 + an + b
        int maxlen = 0;
        int ans = 0;
        // n = 0 のとき、0^2 + a*0 + b = b より b は素数
        for (int b = 2; b < 1000; b++) {
            if (!IsPrime(b)) continue;

            for (int a = -999; a < 1000; a++) {
                for (int i = 0; /* none */; i++) {
                    int x = i*i + a*i + b;
                    if (!IsPrime(x)) {
                        if (maxlen < i-1) {
                            maxlen = i-1;
                            ans = a * b;
                        }
                        break;
                    }
                }
            }
        }

        Console.WriteLine(ans);
    }
}