我对python还不熟悉,我正试图从数组中找出最大的素数序列。我编写了一个函数来计算一个数字是否是素数,使用这个函数,我试图在数组中找到最大的素数序列。
例如:
array1 =1,2,5,4,2,2,3
对于这个数组,最大的素数序列是2,2,3。
def primeSequence(s):
l=[]
k=[]
j=0
for i in range(1,len(s)+1):
if isPrime(s[i]):
l.append(s[i])
else:
break
print(l)
k.append(l)
print(k);基本上,我检查了数组,并检查数字是否为素数。如果是的话,我会把它存储在一个数组中。然后这个数组,我把它存储在另一个数组中,最后,计划是遍历那个k数组,找出哪个数组是最大的。
问题是,for循环在找到4(不是素数)时会中断,而且我不知道如何从那个点再遍历数组。我不确定我是否够清楚..。有什么建议我该怎么做?非常感谢。
发布于 2017-10-16 18:43:39
这样就行了。
def primeSequence(s):
l=[]
k=[]
j=0
max_l = [] #store the max sequence at present
for i in range(len(s)):
if isPrime(s[i]):
l.append(s[i])
else:
if len(l)>len(max_l): #is longest primeSequence
max_l = l #store that
l=[] #for starting new primeSequence series
if len(l)>len(max_l): #handles case where the sequence includes the last element
max_l = l
print(max_l)几件事。要查找最大序列,需要将当前最大序列的值存储在另一个变量中,并检查当前序列len是否大于最大序列len。else部分被用作当前素数序列具有结束的标记,如果您现在拥有的是更大的序列,则在这里检查。
https://stackoverflow.com/questions/46776982
复制相似问题