python自动输出的是升序排列的,例如90=2335怎么让能输出结果90=5332呢
从大到小循环寻找因数
或者在结果的时候倒排序一下
def prime_factors(n):
i = 2
factors = []
while i * i <= n:
if n % i:
i += 1
else:
n //= i
factors.append(i)
if n > 1:
factors.append(n)
return factors
def format_factors(n):
factors = prime_factors(n)
count_dict = {}
for factor in factors:
count_dict[factor] = count_dict.get(factor, 0) + 1
sorted_factors = sorted(count_dict.items(), key=lambda x: x[0], reverse=True)
return '*'.join([f"{factor[0]}{'^'+str(factor[1]) if factor[1]>1 else ''}" for factor in sorted_factors])
num = 90
factors_string = format_factors(num)
print(f"{num}={factors_string}")