微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获得列表的共同主要因素

如何解决如何获得列表的共同主要因素

我正在尝试计算所有非素数共有的素数因子。我已经通过用户输入根据设置的整数计算了非素数整数。我可以计算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])(即10)来计算gcd。然后在上面使用您的代码。

import functools,math

NotPrime = [10,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,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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。