Python程序没有输出
问题在于: 素数3、7、109和673是非常显著的。通过取任意两个素数并以任意顺序连接它们,结果将 永远是最好的。例如,取7和109,7109和1097都是素数。这四个素数之和792表示 具有此性质的四个素数集的最小和。 求一组五个素数的最小和,其中任意两个素数连接起来生成另一个素数 下面是在结果列表中没有给出任何输出的程序。请帮忙Python程序没有输出,python,Python,问题在于: 素数3、7、109和673是非常显著的。通过取任意两个素数并以任意顺序连接它们,结果将 永远是最好的。例如,取7和109,7109和1097都是素数。这四个素数之和792表示 具有此性质的四个素数集的最小和。 求一组五个素数的最小和,其中任意两个素数连接起来生成另一个素数 下面是在结果列表中没有给出任何输出的程序。请帮忙 LIMIT = 20000 prima = [] #empty list def Bsearch(lsta,low,high,search): #Bina
LIMIT = 20000
prima = [] #empty list
def Bsearch(lsta,low,high,search): #Binary search function to search a prime number
if low>high:
return 0
else:
mid = int((low+high)/2)
if search<lsta[mid]:
Bsearch(lsta,low,mid-1,search)
if search>lsta[mid]:
Bsearch(lsta,mid+1,high,search)
if search==lsta[mid]:
return 1
return 0
def primes(LIMIT): #sieve to create prime numbers upto LIMIT
dic = {} #empty dictionary
for i in range(2,LIMIT):
dic[i] = 1
for i in range(2,LIMIT):
for j in range(i,LIMIT):
if i*j>LIMIT:
break
dic[i*j] = 0
for i in range(2,LIMIT):
if dic[i]==1:
prima.append(i)
primes(LIMIT)
result = []
for i in range(0,len(prima)):
print(str((i/len(prima)*100))+"% list passed")
tempa = []
tempa.append(prima[i])
count = 0
for j in range(i+1,len(prima)):
c1 = int(str(prima[j])+str(prima[i])) #first combination
c2 = int(str(prima[i])+str(prima[j])) #second combination
if(Bsearch(prima,0,len(prima)-1,c1) and Bsearch(prima,0,len(prima)-1,c2)):
print("small success : "+str(count))
tempa.append(prima[j])
count +=1
if(count==4):
result.append(tempa)
print("success!")
break
for item in result:
print(item)
LIMIT=20000
prima=[]空列表
def B搜索(lsta、低、高、搜索):#用于搜索素数的二进制搜索函数
如果低>高:
返回0
其他:
中=整数((低+高)/2)
如果searchlsta[mid]:
B搜索(lsta、中+1、高、搜索)
如果搜索==lsta[mid]:
返回1
返回0
定义素数(极限):#筛选以创建达到极限的素数
dic={}#空字典
对于范围(2,极限)内的i:
dic[i]=1
对于范围(2,极限)内的i:
对于范围内的j(i,极限):
如果i*j>限制:
打破
dic[i*j]=0
对于范围(2,极限)内的i:
如果dic[i]==1:
主附加(一)
素数(极限)
结果=[]
对于范围(0,len(prima))中的i:
打印(str((i/len(prima)*100))+%list passed)
坦帕=[]
tempa.append(prima[i])
计数=0
对于范围(i+1,len(prima))内的j:
c1=int(str(prima[j])+str(prima[i])#第一个组合
c2=int(str(prima[i])+str(prima[j])#第二组合
如果(b搜索(prima,0,len(prima)-1,c1)和b搜索(prima,0,len(prima)-1,c2)):
打印(“小成功:+str(计数))
tempa.append(prima[j])
计数+=1
如果(计数=4):
result.append(tempa)
打印(“成功!”)
打破
对于结果中的项目:
打印(项目)
由于搜索是递归的,因此需要返回搜索结果
def Bsearch(lsta,low,high,search): #Binary search function to search a prime number
retval = 0
if low>high:
retval = 0
else:
mid = int((low+high)/2)
if search == lsta[mid]:
# Make this test first as allows it to exit at once with success
retval = 1
elif search<lsta[mid]:
retval = Bsearch(lsta,low,mid-1,search)
else: # search>lsta[mid] Since only 3 choices elif not needed
retval = Bsearch(lsta,mid+1,high,search)
return retval
def Bsearch(lsta、low、high、search):#用于搜索素数的二进制搜索函数
retval=0
如果低>高:
retval=0
其他:
中=整数((低+高)/2)
如果搜索==lsta[mid]:
#首先进行此测试,因为它可以立即成功退出
retval=1
elif searchlsta[mid]因为只有3个选项elif不需要
retval=b搜索(lsta,中+1,高,搜索)
返回返回
限值=20000
prima=[]空列表
def B搜索(lsta、低、高、搜索):#用于搜索素数的二进制搜索函数
如果低>高:
返回0
其他:
中=整数((低+高)/2)
如果searchlsta[mid]:
B搜索(lsta、中+1、高、搜索)
如果搜索==lsta[mid]:
返回1
返回0
定义素数(极限):#筛选以创建达到极限的素数
dic={}#空字典
对于范围(2,极限)内的i:
dic[i]=1
对于范围(2,极限)内的i:
对于范围内的j(i,极限):
如果i*j>限制:
打破
dic[i*j]=0
对于范围(2,极限)内的i:
如果dic[i]==1:
主附加(一)
素数(极限)
结果=[]
限值=20000
prima=[]空列表
def B搜索(lsta、低、高、搜索):#用于搜索素数的二进制搜索函数
如果低>高:
返回0
其他:
中=整数((低+高)/2)
如果searchlsta[mid]:
B搜索(lsta、中+1、高、搜索)
如果搜索==lsta[mid]:
返回1
返回0
定义素数(极限):#筛选以创建达到极限的素数
dic={}#空字典
对于范围(2,极限)内的i:
dic[i]=1
对于范围(2,极限)内的i:
对于范围内的j(i,极限):
如果i*j>限制:
打破
dic[i*j]=0
对于范围(2,极限)内的i:
如果dic[i]==1:
主附加(一)
素数(极限)
结果=[]
如果您希望它显示某些内容,您可能希望在代码中的某个地方打印(某些内容)。@WayneWerner打印在第55行的最后一条语句中,您根本没有得到任何输出?奇怪的是,我得到了索引器:列表索引超出范围
。这是您最新的代码吗?@Kevin OOps抱歉,如果忘记了一个修订,请修改第45行的B搜索,因为B搜索(prima,0,len(prima)-1,c1)-1应该在两个B搜索语句中都存在。请用这些更改更新您的帖子。
LIMIT = 20000
prima = [] #empty list
def Bsearch(lsta,low,high,search): #Binary search function to search a prime number
if low>high:
return 0
else:
mid = int((low+high)/2)
if search<lsta[mid]:
Bsearch(lsta,low,mid-1,search)
if search>lsta[mid]:
Bsearch(lsta,mid+1,high,search)
if search==lsta[mid]:
return 1
return 0
def primes(LIMIT): #sieve to create prime numbers upto LIMIT
dic = {} #empty dictionary
for i in range(2,LIMIT):
dic[i] = 1
for i in range(2,LIMIT):
for j in range(i,LIMIT):
if i*j>LIMIT:
break
dic[i*j] = 0
for i in range(2,LIMIT):
if dic[i]==1:
prima.append(i)
primes(LIMIT)
result = []
LIMIT = 20000
prima = [] #empty list
def Bsearch(lsta,low,high,search): #Binary search function to search a prime number
if low>high:
return 0
else:
mid = int((low+high)/2)
if search<lsta[mid]:
Bsearch(lsta,low,mid-1,search)
if search>lsta[mid]:
Bsearch(lsta,mid+1,high,search)
if search==lsta[mid]:
return 1
return 0
def primes(LIMIT): #sieve to create prime numbers upto LIMIT
dic = {} #empty dictionary
for i in range(2,LIMIT):
dic[i] = 1
for i in range(2,LIMIT):
for j in range(i,LIMIT):
if i*j>LIMIT:
break
dic[i*j] = 0
for i in range(2,LIMIT):
if dic[i]==1:
prima.append(i)
primes(LIMIT)
result = []