Circular primes
Problem 35
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?
Answer:
55
Completed on Mon, 27 Jul 2015, 17:58
__author__ = 'zhengyi'
import math
def IsPrime(x):
k=int(math.sqrt(x))+1
for i in range(2,k):
if x%i==0:
return False
return True
def IsCircular(x):
l=len(x)
x=int(x)
k=pow(10,l-1)
for i in range(0,l):
if IsPrime(x):
x = (x % 10) * k + x // 10
else:
return 0
return 1
def Count(k):
num=1
Element=['1','3','7','9']
res1=Element.copy()
res2=[]
while num<k:
for i in Element:
for j in res1:
res2.append(j+i)
res1=res2
res2=[]
num+=1
result=0
for i in res1:
result+=IsCircular(i)
return result
count=13
for i in range(3,7):
count+=Count(i)
print(count)