Sonnet Primes in Python

jieforest發表於2013-01-11
A while back I wrote about sonnet primes, primes of the form. ababcdcdefefgg where the letters a through g represent digits and a is not zero. The name comes from the rhyme scheme of an English (Shakespearean) sonnet.

In the original post I gave Mathematica code to find all sonnet primes. This post shows how to do it in Python.

CODE:

from sympy.ntheory import isprime
from itertools import permutations

def number(t):
    # turn a tuple into a number
    return 10100000000000*t[0] + 1010000000000*t[1] \
           +   1010000000*t[2] +     101000000*t[3] \
           +       101000*t[4] +         10100*t[5] \
           +           11*t[6]

sonnet_numbers = (number(t) for t in
    permutations(range(10), 7) if t[0] != 0)

sonnet_primes = filter(isprime, sonnet_numbers)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/301743/viewspace-752501/,如需轉載,請註明出處,否則將追究法律責任。

相關文章