一个数的质因数分解
Prime factorization of a number
我正在尝试编写一个程序来查找给定数字的所有质因数,并尝试了以下操作:
def factors(nr):
i = 2
factors = []
while i<nr:
if (nr%i)==0:
factors.append(i)
nr = nr/i
else:
i = i+1
return factors
我的想法如下。从 i = 2 开始,当 i < 数字时,检查数字的模块是否和 i = 0。如果是这种情况,将 i 添加到列表中,然后再次 运行 算法,但现在使用新号码。但是,我的算法不起作用。知道为什么吗?
我知道网站上有几个正确的答案,但我想知道为什么我的程序不正确。
更新
因此,如果我让程序 运行 例如:
因素 (38),产量 [2]。
因素 (25),产量 [5]。
所以它在列表中添加一个数字后停止。
解决问题最简单的方法是更改 while
循环条件:
def factors(nr):
i = 2
factors = []
while i <= nr:
if (nr % i) == 0:
factors.append(i)
nr = nr / i
else:
i = i + 1
return factors
print factors(8)
print factors(9)
print factors(10)
输出
[2, 2, 2]
[3, 3]
[2, 5]
def ba(n):
pfa=[]
y=n
for i in range(n):
if (i!=0 and i!=1):
while (y%i==0):
pfa.append(i)
y=y/i
print(pfa)
我正在尝试编写一个程序来查找给定数字的所有质因数,并尝试了以下操作:
def factors(nr):
i = 2
factors = []
while i<nr:
if (nr%i)==0:
factors.append(i)
nr = nr/i
else:
i = i+1
return factors
我的想法如下。从 i = 2 开始,当 i < 数字时,检查数字的模块是否和 i = 0。如果是这种情况,将 i 添加到列表中,然后再次 运行 算法,但现在使用新号码。但是,我的算法不起作用。知道为什么吗?
我知道网站上有几个正确的答案,但我想知道为什么我的程序不正确。
更新 因此,如果我让程序 运行 例如:
因素 (38),产量 [2]。
因素 (25),产量 [5]。
所以它在列表中添加一个数字后停止。
解决问题最简单的方法是更改 while
循环条件:
def factors(nr):
i = 2
factors = []
while i <= nr:
if (nr % i) == 0:
factors.append(i)
nr = nr / i
else:
i = i + 1
return factors
print factors(8)
print factors(9)
print factors(10)
输出
[2, 2, 2]
[3, 3]
[2, 5]
def ba(n):
pfa=[]
y=n
for i in range(n):
if (i!=0 and i!=1):
while (y%i==0):
pfa.append(i)
y=y/i
print(pfa)