【问题标题】:Largest sequence of prime numbers from array数组中最大的素数序列
【发布时间】:2017-10-16 18:38:03
【问题描述】:

我是 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(不是素数)时中断,我不知道如何从那一点再次遍历数组。 我不确定我是否足够清楚..有什么建议我该怎么做?非常感谢。

【问题讨论】:

    标签: python arrays algorithm


    【解决方案1】:

    应该这样做。

    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是否大于最大序列lenelse 部分用作当前素数序列已结束的标记,您可以在此处检查您现在拥有的是更大的序列。

    【讨论】:

    • 当 i 达到 len(s) 时,s[i] 处没有索引问题?
    • 我推测 OP 正在处理它。但是,是的。我会改的。
    • 是的,我只是想说我收到了这个错误:IndexError: list index out of range。现在可以用了,非常感谢。我会在几分钟后标记答案。
    • @OvidiuG ,很高兴为您提供帮助
    猜你喜欢
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 2017-01-14
    相关资源
    最近更新 更多