view problem27.py @ 14:49c96972949d default tip

#50 rewrite of solution
author Dominic Cleal <dominic@computerkb.co.uk>
date Mon, 01 Dec 2008 19:11:55 +0000
parents 0e08f4decf67
children
line wrap: on
line source

import math

def test(a, b):
	n = 0
	fx = lambda n: n**2 + a*n + b
	v = fx(n)
	while v > 1 and isprime(v):
		n += 1
		v = fx(n)
	return n - 1

def isprime_int(x):
	for t in range(3, int(math.floor(math.sqrt(x)))):
		if x % t == 0:
			return False
	return True

cache = { }
def isprime(x):
	if x % 2 == 0:
		return False
	if x in cache:
		return cache[x]
	r = isprime_int(x)
	cache[x] = r
	return r

rmx = 0
for a in range(-999,1000):
	for b in range(-999,1000):
		r = test(a, b)
		if r > rmx:
			rmx = r
			rcoeff = (a, b)
			print "New winner, a=%d, b=%d for %d" % (a, b, r)