Python质因数分解中如何表示素因子重数并生成指定格式输出
质因数分解格式化实现方案
你原有代码已经完成了质因数提取的核心逻辑,仅需补充存储原始输入、统计因子出现次数、格式化字符串三个步骤即可实现需求,以下是完整修改后的代码:
from collections import Counter def factorization(n): # 存储原始输入值,避免计算过程中被覆盖 original_input = n factors = [] # 优化循环上限到平方根+1,大幅提升大数值计算效率 for i in range(2, int(n**0.5) + 2): while n % i == 0: # 用整数除法避免生成浮点数 n = n // i factors.append(i) # 处理剩余的大于1的质数因子 if n > 1: factors.append(n) # 统计每个质因数的出现次数 count_map = Counter(factors) # 拼接因子表达式 factor_terms = [] for val, cnt in count_map.items(): if cnt == 1: factor_terms.append(str(val)) else: factor_terms.append(f"{val}^{cnt}") # 生成最终输出字符串并打印 output = f"{original_input} = {' × '.join(factor_terms)}" print(output) return output
调用factorization(180)将直接输出你需要的格式:180 = 2^2 × 3^2 × 5。
如果不想导入模块依赖,可以用字典手动实现计数逻辑,替换Counter部分代码即可:
# 无依赖的手动计数实现 count_map = {} for f in factors: count_map[f] = count_map.get(f, 0) + 1
内容的提问来源于stack exchange,提问作者hwanju song
相关产品推荐
相关产品推荐

