【练习题】:统计循环素数

来源:互联网 发布:大蠊干燥虫 知乎 编辑:程序博客网 时间:2024/04/25 06:26


题目内容:

数字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


import math
n=int(raw_input(''))
count=0
x=2

while x<n:
    for i in range(2,int(math.sqrt(x)+1)):
            if x%i==0:
                break
    else:
        if x<10:
            count+=1
        else:
            p=x
            true=1
            while true:
                m=1
                q=p
                while q>10:
                    yu=q%10
                    if yu==0:
                        true=0
                        break
                    q=q/10
                    m=m*10
                if true==0:
                    break
               
                q=(p%m)*10+q
               
                for j in range(2,int(math.sqrt(q)+1)):
                    if q%j==0:
                        true=0
                        break
                else:
                    p=q

                if q==x:
                    count+=1
                    break
    x+=1
print count



第一个for循环判断是否为素数→如果不是素数直接break;如果是素数再判断素数大小→素数小于10,直接统计+1;素数大于10,每次把第一位移动到最后一位,判断是否为素数,知道移动后的数字等于移动前的数字时,统计+1.(在素数移动循环时,对10取余,一旦取余等于0,立即跳出while语句)


素数中间如果有0,需要加判断条件,无需再循环移位







0 0