簡體   English   中英

如何獲得列表的公共素因數

[英]How to get common prime factors of a list

我正在嘗試計算所有非素數共有的素數因子。 我已經通過用戶輸入從集合整數中計算出非質數。 我可以計算 NotPrime 列表中存在的所有整數的素因數。 我的代碼如下:

for n in NotPrime:
i=1
while(i<=n):
    k=0
    if(n%i==0):
        j=1
        while(j<=i):
            if(i%j==0):
                k=k+1
            j=j+1
        if(k==2):
            print(i)
    i=i+1

其中NotPrime中的整數是 [10,20,30,60]。 代碼確實計算列表中每個整數的質因數。 但我想顯示列表的常見素因數。 怎么做?

您可以使用functools.reduce(math.gcd, [10,20,30,60])計算 gcd,即 10。然后使用您的代碼。

import functools, math

NotPrime = [10,20,30,60]

n = functools.reduce(math.gcd, NotPrime)
i=1
while(i<=n):
    k=0
    if(n%i==0):
        j=1
        while(j<=i):
            if(i%j==0):
                k=k+1
            j=j+1
        if(k==2):
            print(i)
    i=i+1

輸出:

2
5

您所要做的就是將素數字典及其出現的次數保存為變量值對,
最后,出現次數與輸入非素數長度相同的素數是公因數。

請參考以下代碼。

NotPrime=[10,20,30,60]
cf={}
for n in NotPrime:
    i=1
    while(i<=n):
        k=0
        if(n%i==0):
            j=1
            while(j<=i):
                if(i%j==0):
                    k=k+1
                j=j+1
            if(k==2):
                if i in cf:
                    cf[i]+=1
                else:
                    cf[i]=1
        i=i+1
print("Common factors")

for a in cf:
    if (cf[a])==len(NotPrime):
        print(a)

輸出

Common factors
2
5

暫無
暫無

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

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