2019如何分解质因数?

国楚晨国楚晨最佳答案最佳答案

我们得了解什么是合数、质数以及它们之间的关系 合数:由两个以上因子(除了 1 和该数本身)组成的自然数叫做合数; 质数:只有1和它本身两个因子的自然数叫做质数 由此可得,大于1的自然数a可以表示成a=p_1^{n_1}*....*p_k^{n_k}的形式,其中 p_i 为素数且 n_i > 1 那么,分解质因数的公式就出来了。

a=p_1^{n_1}\cdot…\cdot p_k^{n_k} 举个例子,求56的质因数分解: 根据上述公式,把56写成56=2^x *3^y *7^z的形式 接着,我们把56代入到上述公式的左边,得到2^x *3^y *7^{(n+1)} 然后我们要求56的所有质因数,就要对每一个可能的x、y、z值进行试算,看看能不能成立 当x=3时,若n=1,则y=2,此时56/23=2……13,符合题意。因此56的质因数为23和13。 当x=4时,若n=-2,则y=8,此时56/82=0……56,不符合题意。因此56的质因数不含有4。 当x=2时,若n=1,则y+z=7……1,不符合题意。因此56的实因数不含2。 56的质因数有:23,13,3,7 当我们要把一个数分解质因数时,要不断尝试新的数据,以寻找最优解,这个过程可以用代码实现。

def factor(n): # 用递归的方法来做分解质因数    if n < 2: return [] # 如果n小于2,则返回空列表    factors = [n]# 把n本身的因子存放在factor中    for a in range(1,int(sqrt(n))): # 对于所有的奇数,从1开始直到开根号(注意这里不用开方,因为根号下是整数,开方后不会产生浮点数)

if gcd(a,n) == 1: # 如果这个奇数和n的最大公约数是1,说明它是n的质因数

factors.append(a) # 就把它添加到factor中

return factors # 最后把factor中的所有元素连起来,就是要求的质因数了

我来回答
请发表正能量的言论,文明评论!