Python程序:按排序顺序查找给定数字的所有质因数
假设我们有一个大于1的数字n,我们必须找到它的所有质因数,并按排序顺序返回它们。我们可以将一个数字写成质数的乘积,它们是它的质因数。同一个质因数可能出现不止一次。
因此,如果输入是42,则输出将是[2, 3, 7]。
为了解决这个问题,我们将遵循以下步骤:
- res := 一个新的列表
- 当 n mod 2 等于 0 时,执行以下操作:
- 将 2 插入到 res 的末尾
- n := n/2 的商
- 对于范围从 3 到 (n 的平方根) 的 i,步长为 2:
- 当 n mod i 等于 0 时,执行以下操作:
- 将 i 插入到 res 的末尾
- n := n/i 的商
- 当 n mod i 等于 0 时,执行以下操作:
- 如果 n > 2,则:
- 将 n 插入到 res 的末尾
- 返回 res
让我们看看下面的实现,以便更好地理解:
示例
class Solution: def solve(self, n): res=[] while n%2==0: res.append(2) n//=2 for i in range(3,int(n**.5)+1,2): while n%i==0: res.append(i) n//=i if n>2: res.append(n) return res ob = Solution() print(ob.solve(42))
输入
42
输出
[2, 3, 7]
广告