# EulerProblem046

# Goldbach's other conjecture (Euler Problem 46)¶

Back to overview.

https://projecteuler.net/problem=46

It was proposed by Christian Goldbach that every odd composite number can be written as the sum of a prime and twice a square.

$9 = 7 + 2×1^2$

$15 = 7 + 2×2^2$

$21 = 3 + 2×3^2$

$25 = 7 + 2×3^2$

$27 = 19 + 2×2^2$

$33 = 31 + 2×1^2$

It turns out that the conjecture was false.

What is the smallest odd composite that cannot be written as the sum of a prime and twice a square?

Okay, we reuse Fermat's test and brute force. Easy.

In [1]:

    def expmod(base, exp, m):
        if exp == 0:
            return 1
        if (exp % 2 == 0):
            return (expmod(base, exp // 2, m) ** 2 % m)
        return (base * expmod(base, exp - 1, m) % m)

    def fermat_test(n):
        a = n - 3
        return expmod(a, n, n) == a

In [2]:

    def twice_square(n):
        return 2 * n * n

In [18]:

    n_max = 10000
    twice_squares = [twice_square(n) for n in range(1, n_max + 1)]

    def test_conjecture(n):
        for ts in twice_squares:
            if ts > n:
                return False
            if fermat_test(n - ts):
                return True

    assert(test_conjecture(33))

In [19]:

    for n in range(3, n_max + 1, 2):
        if not fermat_test(n) and test_conjecture(n) == False:
            s = n

    print(s)
    assert(s == 5777)

    5777

In [ ]: