题目内容:
数字197可以被称为循环素数,因为197的三个数位循环移位后的数字:197,971,719均为素数。100以内这样的数字包括13个,2,3,5,7,11,13,17,31,37,71,73,79,97。要求任意正整数n以内一共有多少个这样的循环素数。
输入格式:
一个正整数n。
输出格式:
n以内循环素数的数目。
输入样例:
100
输出样例:
13
时间限制:2000ms
内存限制:32000kb
import math
def search_prime(n):
arr = []
for i in range(1, n+1):
if shift(i):
arr.append(i)
print len(arr)
def is_prime(x):
if x == 1:
return False
flag = True
for i in range(2, int(math.sqrt(x)) + 1):
if x % i == 0:
flag = False
break
return flag
def shift(n):
x = n
bits = 0
while x is not 0:
x /= 10
bits += 1
flag = True
y = int(math.pow(10, bits-1))
for i in range(0, bits):
if not is_prime(n):
flag = False
break
n = 10*(n % y) + n / y
return flag
def main():
num = int(raw_input())
search_prime(num)
main()