Here is my solution for Project Euler 35. (Find the number of circular primes below 1,000,000. Circular meaning all rotations of the digits are prime, i.e. 197
, 719
, 971
.) The code takes about 30 minutes to run. Can you help me identify which parts of the algorithm are hogging up computation time?
I know there are many solutions out there, I just want to know why this one is soooo slow. I suspect it has something to do with the p.count
function call.
p
is initialized to a list of all primes below 1 million using the Sieve of Eratosthenes.total
is initialized to 0.
for i in p:
primer = str(i)
circ = 1
for j in range(len(primer)-1):
primer = primer[1:]+primer[:1]
if (p.count(int(primer)) == 1):
circ += 1
if circ == len(primer):
total += 1