我是python的新手,我正在尝试从数组中找出最大的素数序列。 我写了一个函数来计算一个数字是否为素数并使用它我试图在数组中找到最大的素数序列。
例如:
array1 = [1,2,5,4,2,2,3,4]
对于这个数组,最大的素数序列是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(不是素数)时会中断,我不知道如何从那一点再次遍历数组。 我不确定我是否足够清楚..有什么建议我怎么能这样做?非常感谢。
答案 0 :(得分:0)
这应该这样做。
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
部分用作当前素数序列结束的标记,这是检查的地方,如果您现在拥有的是更大的序列。< / p>