def sumOfConsectutivePrimes(limit=1000000): p.genPrimesESieve(1000000, True) i, j = 1, 2 runningSum, maxPrime = p.primes[i], 0 result, longest = runningSum, 1 for i in xrange(1, len(p.primes)): j = i+1 count = 1 runningSum = p.primes[i] if runningSum >= 40: break curLongest, curMaxPrime = 2, 0 while runningSum+p.primes[j] < limit: count +=1 runningSum += p.primes[j] if p.isPrime(runningSum): curLongest = count curMaxPrime = runningSum j += 1 if curLongest >= longest: result = curMaxPrime longest = curLongest print longest, result return longest, result
def coefficientProducts(a=1000, b=1000): aMax, bMax, nMax = (0, 0, 0); for a in xrange(-1000, 1001): for b in xrange(-1000, 1001): n = 0 while p.isPrime(abs(n*n + a*n + b)): n += 1 if (n > nMax): aMax = a bMax = b nMax = n return aMax*bMax
def coefficientProducts2(): aMax, bMax, nMax = (0, 0, 0) for a in xrange(-999, 1001, 2): key = 1 while p.primes[key] <= 1000: for sign in (1, -1): n = 0; offset = -1 if p.primes[key]%2 == 0 else 0 # Making a even if b is even while p.isPrime(abs(n*n + (a+offset)*n + sign*p.primes[key])): n += 1 if (n > nMax): aMax = a; bMax = p.primes[key]; nMax = n; key += 1 return aMax*bMax, nMax
def truncatablePrime(n, leftToRight=True): '''Returns if all numbers of length ≤ 1 are also prime. leftToRight flag determines in which direction the new number is built up from. ''' n = str(n) if not leftToRight: n = n[::-1] newNumber = '' for i in xrange(len(n)-1): if leftToRight: newNumber += n[i] else: newNumber = n[i] + newNumber if not p.isPrime(int(newNumber)): return False return True