from lib_prime import primes def cyles(xs): if len(xs) <= 1: return xs return [xs[i:] + xs[:i] for i in range(len(xs))] def is_circular(p, prime_set): cs = cyles(str(p)) for c in cs: if not int("".join(c)) in prime_set: return False return True def euler_035(): ps = set(primes(1000000)) return len([p for p in ps if is_circular(p, ps)]) if __name__ == "__main__": print("e035.py: {}".format(euler_035())) assert(euler_035() == 55)