princeofsudan

Project Euler#27 Quadratic primes

Mar 3rd, 2013
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.56 KB | None | 0 0
  1. #Euler published the remarkable quadratic formula:
  2.  
  3. #n² + n + 41
  4.  
  5. #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.
  6.  
  7. #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.
  8.  
  9. #Considering quadratics of the form:
  10.  
  11. #    n² + an + b, where |a| < 1000 and |b| < 1000
  12.  
  13. #    where |n| is the modulus/absolute value of n
  14. #    e.g. |11| = 11 and |−4| = 4
  15.  
  16. #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.
  17.  
  18. #isPrime algorithm from MIT 6.00x course notes
  19.  
  20. def isPrime(n):
  21.     '''check if integer n is a prime'''
  22.     # range starts with 2 and only needs to go up the squareroot of n
  23.     for x in range(2, int(n**0.5)+1):
  24.         if n % x == 0:
  25.             return False
  26.     return True
  27.  
  28. maxn, maxa, maxb = 0, 0, 0
  29.  
  30. for a in range(-1000,1000):
  31.     for b in range(-1000,1000):
  32.         n = 0
  33.         while (n**2)+(a*n)+b > 1 and isPrime((n**2)+(a*n)+b):
  34.             n += 1
  35.         if n > maxn:
  36.             maxn, maxa, maxb = n, a, b
  37. print maxn, maxa, maxb, maxa*maxb
  38.  
  39. #Improvement (Not Implemented): Knowing that b must be prime and a must be odd we could iterate through the #possibilities to find a solution.
Advertisement
Add Comment
Please, Sign In to add comment