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