正整数分解成质因数的乘积(分解质因数)

分解质因数(正整数分解成质因数的乘积)

1、需求描述:

将一个正整数分解质因数,例如输入90,打印出90=2*3*3*5

2、分析思路:

初步分析,先判断一个数是否是质数,然后将正整数除以该质数,如果能除尽,则刷新正整数,不能除尽,继续寻找下一个质数。如此循环往复,直到正整数变成1

3、按照此思路写出的代码如下:

#定义一个判断是否是质数的函数,返回结果是true or false。def primeNumber(num):
    if num == 2:        return True
    for i in range(2, num):        if num % i == 0:            return False
    return True#将正整数分解成质因数number = int(input("请输入一个正整数:"))
print("%d = " % number, end="")
i = 2while i <= number:    if primeNumber(i) and (number % i == 0):        if i == number:
            print("%d" % i, end="")        else:
            print("%d * " % i, end="")
        number = number // i
        i = 2
    else:
        i = i + 1

4、运行结果如下:

请输入一个正整数:90

90 = 2 * 3 * 3 * 5

请输入一个正整数:120000

120000 = 2 * 2 * 2 * 2 * 2 * 2 * 3 * 5 * 5 * 5 * 5

5、算法分析:

这种方法需要不停的判断是否是质数,非常麻烦,遇到数比较大的时候计算速度会非常的慢,因此参考了其他人的代码进行优了优化。

6、优化后的代码:

number = int(input("请输入一个正整数:"))print("%d = " % number, end="")for i in range(2, number):    # 从最小的数开始不停的循环做从除法,直到除不尽才进入下一个数
    while i != number:        if number % i == 0:            print("%d * " % i, end="")
            number = number / i        else:            breakprint("%d " % number)

这样看,无需进行每次判断是否是质数的运算,代码简洁多了

运行结果:

请输入一个正整数:9999

9999 = 3 * 3 * 11 * 101

(0)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 PTU@FOXMAIL.COM 举报,一经查实,立刻删除。