57 lines
1.2 KiB
Python
57 lines
1.2 KiB
Python
def get_primes_till(n):
|
|
square = lambda n: n * n
|
|
candiates = range(2, n + 1)
|
|
primes = []
|
|
while candiates:
|
|
prime = candiates[0]
|
|
primes.append(prime)
|
|
candiates = [c for c in candiates if c % prime != 0]
|
|
return primes
|
|
|
|
|
|
def get_coprime(n):
|
|
primes = get_primes_till(n)
|
|
for p in primes:
|
|
if n % p != 0:
|
|
return p
|
|
raise Exception("No coprime found for {}.".format(n))
|
|
|
|
def is_prime_fermat(n):
|
|
if n == 2:
|
|
return True
|
|
a = get_coprime(n)
|
|
if (a ** (n - 1) % n) != 1:
|
|
return False
|
|
else:
|
|
return True
|
|
|
|
def is_prime_deterministic(n):
|
|
pass
|
|
|
|
def is_prime(n):
|
|
if n == 2:
|
|
return True
|
|
if n < 2:
|
|
return False
|
|
if not is_prime_fermat(n):
|
|
return False
|
|
else:
|
|
return True
|
|
return is_prime_deterministic(n)
|
|
|
|
def get_length(a, b):
|
|
def formula(n):
|
|
return n*n + a*n + b
|
|
for n in range(99999):
|
|
if not is_prime(formula(n)):
|
|
return n
|
|
|
|
def bruteforce():
|
|
solution = None
|
|
options = [(get_length(a, b), a, b)
|
|
for a in get_primes_till(1000)
|
|
for b in get_primes_till(1000)]
|
|
print(max(options))
|
|
|
|
bruteforce()
|