为了账号安全,请及时绑定邮箱和手机立即绑定

有关循环素数编程

有关循环素数编程

qq_情有独钟_1 2015-10-17 21:27:06
数字197可以被称为循环素数,因为197的三个数位循环移位后的数字:197,971,719均为素数。100以内这样的数字包括13个,2,3,5,7,11,13,17,31,37,71,73,79,97。求大家帮忙算出算出1000000以内一共有多少个这样的循环素数。并把代码给我。程序运行时间要少于6秒的。谢谢了   用Python 进行编程!!Python
查看完整描述

2 回答

已采纳
?
Perona

TA贡献355条经验 获得超403个赞

#!/usr/bin/python
# encoding: utf-8
  
import time
import pprint
  
  
def allPrime(maxNum):
    aList = range(0, maxNum)
    def _do(aPrime):
        for i in xrange(aPrime, maxNum, aPrime):
            aList[i] = 0
        return aPrime
    return map(_do,
        (i for i in xrange(2,maxNum) if aList[i])
        )
  
 
t0 = time.time()
LIMIT = 1000000
primelist = allPrime(LIMIT)
primesets = set(primelist)
 
 
def loopshift(num):
    numlst = list(str(num))
    result = list()
    for i in range(len(numlst)):
        x = int(''.join(numlst[i:] + numlst[:i]))
        if x not in primesets:
            return None
        result.append(x)
    result = sorted(set(result))
    for x in set(result):
        primesets.remove(x)
    return result
 
 
found = list()
for num in primelist:
    xn = loopshift(num)
    if xn and xn not in found:
        found.append(xn)
pprint.pprint(found)

在loopshift方法中对每个数据生成所有相关循环数,再判断每一个是否都是素数

查看完整回答
反对 回复 2015-10-19
  • 2 回答
  • 0 关注
  • 3267 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信