You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python库生成整数的所有因数并输出升序列表?

从sympy.factorint结果生成整数的所有因数升序列表

使用sympy.factorint()能获取整数的质因数分解字典,比如对567执行:

import sympy
sympy.factorint(567)

返回结果为:

{3: 4, 7: 1}

若需要将该整数的所有因数以升序列表形式输出(期望结果:[1, 3, 7, 9, 21, 27, 63, 81, 189, 567]),可通过以下方法实现:

解决方案代码

import sympy
from itertools import product

def get_all_factors(n):
    factor_dict = sympy.factorint(n)
    # 生成每个质因数的所有幂次(含0次幂)
    prime_power_groups = []
    for prime, exponent in factor_dict.items():
        prime_power_groups.append([prime**i for i in range(exponent + 1)])
    # 计算所有幂次组合的乘积并排序
    all_factors = sorted([prod(comb) for comb in product(*prime_power_groups)])
    return all_factors

# 测试示例
print(get_all_factors(567))

代码说明

  1. 调用sympy.factorint(n)获取目标整数的质因数分解字典;
  2. 对每个质因数,生成从0次幂(即1)到其最高次幂的所有数值;
  3. 用itertools.product生成这些幂次列表的笛卡尔积,每个组合对应一个因数;
  4. 计算每个组合的乘积,最后排序得到升序的因数列表。

内容的提问来源于stack exchange,提问作者ishandutta2007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 02:05:23