Difference between revisions of "Playing with Primes"
Jump to navigation
Jump to search
PeterHarding (talk | contribs) (New page: =Product of Adjacent Primes which are Palindromes= <pre> 2 * 3 = 6 7 * 11 = 77 17 * 19 = 323 191 * 193 = 36863 1051 * 1061 = 111...) |
PeterHarding (talk | contribs) |
||
| Line 12: | Line 12: | ||
<pre> | <pre> | ||
#!/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() | |||
#------------------------------------------------------------------------------- | |||
</pre> | </pre> | ||
[[Category:Python]] | [[Category:Python]] | ||
Latest revision as of 08:51, 30 March 2009
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()
#-------------------------------------------------------------------------------