[英]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.