题目
从标准输入读入一个大于 1 的正整数 n,将其分解为质因数乘积的形式输出(例如:90=2*3*3*5)。
输入格式:一行输入一个正整数 n。
输出格式:按 n=p1*p2*...*pk 的格式输出质因数分解结果,末尾换行。
数据范围与约定:2 ≤ n ≤ 109。
思路与算法
1. 试除法原理
从最小质数 d = 2 开始试除。若 n % d == 0,则 d 必为质因数,循环除尽该因数并记录,随后 d += 1。
2. 范围缩减到 √n
只需循环到 d * d <= n。循环结束后若剩余 n > 1,则说明剩下的数本身就是一个大于 √原数 的质因数,直接追加。
完整程序
n = int(input())
# 从最小质因数 2 开始试除
d = 2
factors = []
while d * d <= n:
while n % d == 0:
factors.append(str(d))
n //= d
d += 1
# 若剩余商大于 1,则本身也是一个质因数
if n > 1:
factors.append(str(n))
print('*'.join(factors))运行示例
输入:
90输出:
90=2*3*3*5