簡體   English   中英

我怎樣才能找到素因數

[英]How can i find Prime factors

def fi_da_prfac(var):
    fac = []
    prfac = []
    z = range(2, (var/2)+1)
    z.append(var)
    for t in z:
        if var == t:
            prfac.append(t)
            z = range(2, (var/2)+1)
            z.append(var)
            break
        else:
            if  var % int(t) == 0:
                prfac.append(t)
                var = var/t
                del z
                z = range(2, (var/2)+1)
                z.append(var)
                del t

    return prfac

我是編碼初學者。 我正在嘗試編寫代碼來查找給定數字的質數分解。 如果我們分析代碼,我想要做的是,如果我找到一個因素,我想再次啟動for循環即。 從 t = 2 開始 for 循環。我沒有找到任何方法來做到這一點。 所以我最后刪除了“t”。 然而,代碼沒有給出所需的輸出。 我嘗試了很多來調試它,但不能。 請幫忙

您所缺少的難題的基本部分是 yield 運算符,這使函數充當生成器並在運行循環時保持其位置。 然而,需要注意的關鍵是輸出將是一個生成器對象,必須循環遍歷以提取所需的輸出。

你的例子:

import math

def fi_da_prfac(var):
    z = range(2, math.ceil(var/2)+1)
    z.append(var)
    for t in z:
        if var % int(t) == 0:
            yield t

prfac = yield_eg(15)
[fac for fac in prfac]

這是學習如何編碼的一個很好的問題,但是正如其他人提到的,如果您需要,可以使用更簡潔的預制函數來實現這一點。

厄舍伍德

暫無
暫無

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

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