簡體   English   中英

表達一些素數的方式

[英]Way to express prime factors of a number

我的任務是返回整數(n)的素數。 我的問題是我該如何用數學表達式來表示編碼? 我知道素數是只能被1本身整除的數字,但不知道如何將其放入代碼中。

但是,我確實找到了這種編碼有效,但是我不知道為什么:

def primes(n):

    primfac = []
    d = 2
    while d*d <= n:
        while (n % d) == 0:
            primfac.append(d)  
            n //= d
        d += 1
    if n > 1:
       primfac.append(n)
    return primfac

有人可以向我解釋為什么這種編碼有效嗎? 為什么選擇d作為2而不是1來開始? 另外,為什么他對d求平方並檢查它是否等於或小於n? 等等。

d從2開始,因為湯姆·卡爾澤斯Tom Karzes)提到,您最終會得到一個無限的1s列表。 他對d求平方並檢查它是否等於n的原因是因為您只需要檢查數字的平方根即可確定其因數,而math.sqrt()的計算量要比對平方的平方花費更多。 它的作用是檢查d是否為n的因數,直到d達到n平方根為止。 然后,他附加了d因為已將其檢查為一個因素。

您對代碼還有其他不了解的地方嗎?

暫無
暫無

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

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