【发布时间】:2014-05-09 09:42:19
【问题描述】:
问题陈述:
数字 197 被称为圆素数,因为数字的所有旋转:197、971 和 719 本身都是素数。
100 以下的素数有 13 个:2、3、5、7、11、13、17、31、37、71、73、79 和 97。
一百万以下有多少个圆素数?
我的问题 我检查了所有代码,发现二进制搜索函数给出了一个 return 1 语句作为输出打印成功。但是最终列表中没有添加任何内容。请帮忙
Python 程序:
from time import time
start = time()
LIMIT = 1000000 # largest limit of the prime numbers
prima = [] # list of primes later to be filled by primes function
# binary search function
def Bsearch(lsta,low,high,search):
if low>high:
return -1
else:
mid = int((low+high)/2)
if search<lsta[mid]:
Bsearch(lsta,low,mid-1,search)
elif search>lsta[mid]:
Bsearch(lsta,mid+1,high,search)
elif search==lsta[mid]:
print("Success!")
return 1
# prime number generating function
# uses sieve of Era** algorithm
# produces correct result tested
def primes(LIMIT):
lsta = {} # temporaty empty dictionary
for i in range(2,LIMIT):
lsta[i] = 1
for i in range(2,LIMIT):
for j in range(i,LIMIT):
if i*j>LIMIT:
break
lsta[i*j] = 0
for i in range(2,LIMIT):
if(lsta[i]==1):
prima.append(i)
primes(LIMIT)
final = []
for item in prima:
x = int(str(item)[::-1])
# real problem here the following statement not inserting any value in final list
if(Bsearch(prima,0,len(prima)-1,x)):
print("Hello!")
print(final)
final.append(item)
print(final)
【问题讨论】:
-
您在递归调用中缺少返回语句。此外,-1 是真值;返回 True 或 False 布尔值。
-
@Wooble 天哪!..谢谢..我在这么愚蠢的错误上浪费了这么多时间
-
Wooble,您应该将此作为回复发布,目前这个问题仍未得到解答:(