赞
踩
问题描述
求出区间[a,b]中所有整数的质因数分解。
输入格式
输入两个整数a,b。
输出格式
每行输出一个数的分解,形如k=a1* a2* a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)
样例输入
3 10
样例输出
3=3
4=2* 2
5=5
6=2* 3
7=7
8=2* 2* 2
9=3* 3
10=2* 5
提示
先筛出所有素数,然后再分解。
数据规模和约定
2<=a<=b<=10000
分解质因数只针对合数。(分解质因数也称分解素因数)求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止。
参考百度百科:分解之因素
代码:
def solve(res, n, result):
for i in range(2, n+1):
if n % i ==0:
res += str(i)
n = n // i
if n == 1:
return res
elif n in result.keys():
res += '*'
res += result[n]
return res
else:
res += '*'
return solve(res, n, result)
else:
continue
if __name__ == '__main__':
a, b = map(int, input().split()) # 输入两个整数
result = {} # result存放值与其分解质因数的对应关系
# {3: '3', 4: '2*2', 5: '5', 6: '2*3', 7: '7', 8: '2*2*2', 9: '3*3', 10: '2*5'}
for i in range(a, b+1):
res = '' # 存放各个因数
result[i] = solve(res, i, result)
# 输出
for k, v in result.items():
s = str(k)+ '='+ str(v)
print(s)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。