簡體   English   中英

如何查找每次迭代中獲得的最大值以將其追加到列表中

[英]how to find maximum of values obtained in each iteration to append it to a list

給定數字n ,編寫一個程序以查找從n開始的九個連續數字中每個數字的最大素數和。

我能夠得到這些因子,但是對於每個值,如果有多個質數因子,我只想要那些我無法獲得的質數因子中的最大值。

def find_g(num):
    factor=[]
    list1=[]
    list2=[]
    for i in range(0,num-1):
        factor.append(num+i)
    print(factor)
    for f in factor:
        for i in range(2,f+1):
            if(f%i==0 and i%2!=0):
                list1.append(i)
                print(list1)
                list2.append(max(list1))
        list1=[]

    print(list2)

print(find_g(10))

輸入10
所需的輸出: [5, 11, 3, 13, 7, 5, 17, 9] 5、11、3、13、7、5、17、9 [5, 11, 3, 13, 7, 5, 17, 9]
實際輸出: [5, 11, 3, 13, 7, 3, 5, 15, 17, 3, 9]

您可以將其分解為兩部分:(A)找到任意給定數字n的最大素數,(B)從n開始對九個連續數字中的每一個的最大素數求和。 我將描述每種代碼,然后將它們組合。

(A)我們可以使用以下代碼找到數字n的最大素數: lpf(n)

def lpf(n):
    i = 2
    while i * i <= n:
        if n % i:
            i += 1
        else:
            n //= i
    return n

(B)然后,我們可以通過跨range(n, n+9)映射lpf函數並對結果求和來為從nn+9的每個數字運行此代碼。

def find_g(n):
    return sum(map(lpf, range(n, n+9)))

對於n=10 ,我們得到

find_g(10) = 66

這是正確的,因為[10、11、12、13、14、15、16、17、18、19]的最大素數分別為[5、11、3、13、7、5、2、17 ,3]。

(請注意,您的預期答案不正確,您能找出原因嗎?)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM