簡體   English   中英

我似乎找不到 python 3 中數字的最高素數的正確代碼

[英]I can't seem to find the corrrect code for the Highest prime factor of a number in python 3

b = []
a = int(input("Enter the number: "))
for i in range(2,a):
    if a%i == 0:
        pass
    else:
        for j in range(2,i):
            if i%j == 0:
                break
        else:
            b.append(i)            

for k in b:
    if max < k:
        max = k

print("max prime factor is this: ",max)

這很接近:但是有一些問題:

  • 您使用range(2,a)檢查因子; 這僅包含從2a-1整數,它忽略了素數的情況(其中a是最高因子)。 使用range(2,a+1)代替檢查這一點。
  • 如果數字可被i整除(很好地使用% ),則您的第一個條件調用pass ,但這會跳過a所有因素 相反,如果a % i == 0pass ,您希望繼續檢查數字
  • 您錯誤地使用了max - max是 function,所以當您說if max < k時,這只是檢查 function 是否小於k (這並不是真正有意義的比較),並且您的最后一個print語句只是打印Python 的max function 的字符串表示形式。 max相反可以將數組作為參數,並返回最大值,因此您只需像max(b)一樣將列表b傳遞給max 不需要另一個循環!

以上就是這幾點,有問題請追問! 我喜歡使用break的想法,我還添加了一個標志( prime ),以便更容易決定何時將 append 設置為b

b = []
a = int(input("Enter the number: "))
for i in range(2,a+1):
    prime = True
    if a%i == 0:
        for j in range(2,i):
            if i%j == 0:
                prime = False
                break
        if prime:
            b.append(i)

print(max(b))

暫無
暫無

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

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