Playing with Primes

From PeformIQ Upgrade
Revision as of 08:51, 30 March 2009 by PeterHarding (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Product of Adjacent Primes which are Palindromes

    2 *     3 =          6
    7 *    11 =         77
   17 *    19 =        323
  191 *   193 =      36863
 1051 *  1061 =    1115111

The Code

#!/usr/bin/env python

import sys

primes = []

MAX    = 100000

#-------------------------------------------------------------------------------

def primes_to(N):
   for i in range(N):
      factored = False
      no = i + 2
      # print "Number -> %s" % no
      for divisor in primes:
        # print "Divisor -> %s" % divisor
        if divisor:
           if no % divisor == 0:
              factored = True
           if factored:
              break
      if not factored:
         # print "Prime -> %s" % no
         primes.append(no)

#-------------------------------------------------------------------------------

def reverse(n):
   s = "%s" % n
   l = len(s)
   r = []

   if l > 1:
      for i in range(l):
         r.append(s[l-i-1])
      rev = ''.join(r)
   else:
      rev = s

   # print "s -> %s" % s
   # print "r -> %s" % rev
 
   return int(rev)

#-------------------------------------------------------------------------------

primes_to(MAX)

for i in range(len(primes)):
   try:
      product =  primes[i] * primes[i+1]
   except:
      continue

   rev = reverse(product)

   if rev == product:
      sys.stderr.write("%5s * %5s = %10s\n" % (primes[i], primes[i+1], product))
      sys.stderr.write("^^^^^^^^^^^^^^^^^^^^^^^^^^^\n")
      sys.stderr.flush()

#-------------------------------------------------------------------------------