【发布时间】:2023-03-19 10:23:02
【问题描述】:
我试图从给定的限制中找到循环素数的数量。 prime(x) 将返回一个数字是否为素数。 rotations() 将返回一个旋转数字列表。最后, prime_count() 将根据给定的限制输出循环素数的总数。 prime() 和 rotations() 都给了我正确的输出;然而, prime_count() 并没有像它应该的那样递增。关于我做错了什么有什么想法吗?
def prime(number): #return true or false
return all(number% i for i in range(2,number))
def rotations(num): #rotating number and return list
list = []
m = str(num)
counter = 0
while counter < len(str(num)):
m=m[1:] + m[0]
list.append(int(m))
counter+=1
list1=sorted(list,key=int)
return list1
def prime_count(limit): #return numbers of circular primes from given limit
counter = 0
for i in range(1,limit+1):
a=rotations(i)
for j in a:
if j == prime(j):
counter+=1
return counter
print(prime_count(100))
【问题讨论】:
-
您是否尝试在
prime_count中打印任何内容以查看您的变量/数据在其中做什么? -
考虑一下如果您的初始数字包含数字 8 会发生什么。您对至少其中一个轮换有何看法?您可以对其他数字进行相同的观察,这将帮助您减少必须进行的素数测试。