当前位置:   article > 正文

蓝桥杯每日一练:分解质因数_因数:整数 a 乘以整数 b 得到整数 c,整数 a 与整数 b 都称做整数 c 的因数。一个

因数:整数 a 乘以整数 b 得到整数 c,整数 a 与整数 b 都称做整数 c 的因数。一个

题目

问题描述
  求出区间[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

pythond代码

分解质因数只针对合数。(分解质因数也称分解素因数)求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止。

参考百度百科:分解之因素
代码:

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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

三、视频讲解

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/404958
推荐阅读
相关标签
  

闽ICP备14008679号