0
我试图尝试项目欧勒(click here)的第35个问题。问题如下所示:项目欧拉#35 - 通函(不正确的结果1)
数字197被称为圆形素数,因为数字的所有旋转:197,971和719本身都是素数。
在100以下有13个这样的素数:2,3,5,7,11,13,17,31,37,71,73,79和97.
在100万以下有多少个圆形素数?
因此,我创建了一个第一百万个数的筛子,以获得一百万以下的所有素数,并用它来比较素数的旋转结果。
arr = []
for i in range(2, len(sieve)):
if sieve[i]:
sub_arr = retCircular(i)
count = len(sub_arr)
carry = 0
for j in sub_arr:
if sieve[j]:
carry += 1
sieve[j] = False
else:
break
if carry == count:
for j in sub_arr:
arr.append(j)
print "Number of circular primes =", len(arr)
这个节目给了圆形的素数的数量在1万至54被,而实际的答案是55,可能有人帮助我,我哪里错了?
注:
- retCircular(n)是一个用户定义的功能,它返回号码的所有圆形形式的阵列。
- 'sieve'是一个布尔值数组,其中包含所有主要位置索引处的True和所有合成位置索引处的False。
P/S,如果有人有更好的方法来解决问题,请让我知道!
欢迎StackOverflow上。请阅读并遵守帮助文档中的发布准则。 [最小,完整,可验证的示例](http://stackoverflow.com/help/mcve)适用于此处。在您发布代码并准确描述问题之前,我们无法有效帮助您。特别是,我们需要代码来重现问题。我们也可以使用你的逻辑和数据 - 你缺少什么素数? – Prune
在循环之前添加它:'print sieve [2]'。如果答案是“3”,则跳过第一个素数。 –
考虑如果您的初始素数(在测试循环性之前)包含数字0,2,4,5,6,8中的任何一个将会发生什么。小心使用单数字素数2和5。 – rossum