def prime_factors(n, factors = list()):
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return prime_factors(n//i, factors + [i])
return factors + [n]
m = int(input())
ans = prime_factors(m)
print(f"{m}={'x'.join(map(str, ans))}")
分解质因数,分解一下题目步骤,按照以下代码测试看看:
def prime_factors(n):
"""
分解质因数函数,返回n的所有质因数
"""
factors = [] # 用来存储质因数
i = 2 # 从最小质数2开始试除
while i * i <= n:
if n % i:
i += 1
else:
n //= i
factors.append(i)
if n > 1:
factors.append(n)
return factors
# 测试分解质因数的函数
m = int(input("请输入一个正整数:"))
print(f"{m}的质因数为:{prime_factors(m)}")
运行程序后,会要求用户输入一个正整数m,然后输出其所有的质因数。例如,输入20,则输出2和5,因为20可以分解为2 × 2 × 5。
例如输入:8 输出为:
m=eval(input())
for i in range(1,m+1):
for j in range(1,2*i):
print('*',end='')
print()
代码示例:
def prime_factors(n):
"""分解质因数函数"""
factors = []
# 将2作为唯一的偶数因子处理
while n % 2 == 0:
factors.append(2)
n //= 2
# 处理奇数因子
for i in range(3, int(n**0.5)+1, 2):
while n % i == 0:
factors.append(i)
n //= i
# 处理剩余的因子
if n > 2:
factors.append(n)
return factors
说明: - 该函数的输入为一个正整数n,输出为n的质因数列表。 - 首先将2作为唯一的偶数因子,将其全部除尽。 - 然后处理剩余的奇数因子,只需循环到n的平方根即可。 - 最后处理剩余的因子,如果n>2则将其加入质因数列表中。
示例输入输出:
# 输入为正整数123456789,输出为它的质因数列表
prime_factors(123456789) # 输出 [3, 3, 3607, 3803]