Live2D

Python练习实例014

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

#! /usr/bin/env python3
# -*- coding:utf-8 -*-

# Author   : Ma Yi
# Blog     : http://www.cnblogs.com/mayi0312/
# Date     : 2020-06-18
# Name     : demo014
# Software : PyCharm
# Note     : 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。


def is_prime_num(i_num: int):
    """
    判断一个正整数是否是素数
    :param i_num: 需要判断的正整数
    :return:
    """
    flag = True  # 假设是素数
    # 质数(素数)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
    for i in range(2, i_num // 2 + 1):
        if i_num % i == 0:
            # 能被1和它本身以外的数整除:不是素数
            flag = False
            break

    return flag

# 入口函数
if __name__ == '__main__':
    num = int(input("Please input num:"))
    temp_list = []
    if num < 3:
        print("%d=%d" % (num, num))
        exit()
    while not is_prime_num(num):
        for i in range(2, int(num // 2) + 1):
            if num % i == 0 and is_prime_num(i):
                temp_list.append(str(i))
                num //= i
                break
    print("%d=%s" % (num, "*".join(temp_list)))

运行结果:

Please input num:90
5=2*3*3

 

posted @ 2020-06-18 17:31  骑着螞蟻流浪  阅读(217)  评论(0编辑  收藏  举报