Solution to Problem 35. Written in Python.
Problem: The number, 197, is called a circular prime because all rotations of the digits: 197, 971, and 719, are themselves prime.
There are thirteen such primes below 100: 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, and 97.
How many circular primes are there below one million?
import collections
from problems.euler_lib import euler_lib as lib
def get_rotations(number):
rotations = [number]
d = collections.deque([int(n) for n in str(number)])
for i in range(len(d) - 1):
d.rotate(1)
rotations.append(int(''.join(str(digit) for digit in d)))
return rotations
answer = 0
sieve = lib.eratosthenes_sieve(1000000)
prime_numbers = filter(lambda x: x < 1000000, sieve)
for n in prime_numbers:
rotations = get_rotations(n)
if all(p in prime_numbers for p in rotations):
answer += 1
print answer