Project Euler/java/P27.java
<reponame>jisaa/codingimport java.math.BigInteger;

public class P27 {
	public static void main(String... args) {
		new P27();
	}

	public P27() {
		BigInteger t;
		int mejorA = -1, mejorB = 11, mejorN = 0, cont;
		for (int a = -999; a < 1000; ++a) {
			cont = 0;
			for (int n = 0;; ++n) {
				try {
					t = new BigInteger("" + (n * n + n * a + 2));
					if (t.isProbablePrime(100))
						++cont;
					else
						break;
				} catch (Exception e) {
					break;
				}
			}
			if (cont > mejorN) {
				mejorA = a;
				mejorB = 2;
				mejorN = cont;
			}
			if (cont == 0)
				continue;
			for (int b = 3; b < 1000; b += 2) {
				cont = 0;
				for (int n = 0;; ++n) {
					try {
						t = new BigInteger("" + (n * n + n * a + b));
						if (t.isProbablePrime(100))
							++cont;
						else
							break;
					} catch (Exception e) {
						break;
					}
				}
				if (cont > mejorN) {
					mejorA = a;
					mejorB = b;
					mejorN = cont;
				}
			}
		}
		System.out.println("La fórmula es: n²+" + mejorA + "·n+" + mejorB + ", y produce " + mejorN + " primos.");
		System.out.println("a·b=" + mejorA * mejorB);
	}
}

/*
 * Euler published the remarkable quadratic formula:
 * 
 * n² + n + 41
 * 
 * It turns out that the formula will produce 40 primes for the consecutive
 * values n = 0 to 39. However, when n = 40, 402 + 40 + 41 = 40(40 + 1) + 41 is
 * divisible by 41, and certainly when n = 41, 41² + 41 + 41 is clearly
 * divisible by 41.
 * 
 * Using computers, the incredible formula n² − 79n + 1601 was discovered, which
 * produces 80 primes for the consecutive values n = 0 to 79. The product of the
 * coefficients, −79 and 1601, is −126479.
 * 
 * Considering quadratics of the form:
 * 
 * n² + an + b, where |a| < 1000 and |b| < 1000
 * 
 * where |n| is the modulus/absolute value of n
 * e.g. |11| = 11 and |−4| = 4
 * 
 * Find the product of the coefficients, a and b, for the quadratic expression
 * that produces the maximum number of primes for consecutive values of n,
 * starting with n = 0.
 * 
 */