[课后题记录] 对int范围数字的因式分解(直接输出, 字符串列表输出)

#  2021/8/2  ki

# 本次要求: 编写程序, 用户从键盘输入小于1000的整数, 对其进行因式分解.
# 数字范围可按要求修改

"""
思路分析:
    1.输入与异常处理
    2.因式分解与输出因数
    3. 缝合
"""

#        输入与异常处理模块

def inex(x):            # 判断输入和异常处理
    try:
        x = int(x)
    except:
        print('只能输入整数')
    else:
        if not 0 < x < 1000:
            print('输入的数字不在规定范围之内')
        else:
            return x

#        因式分解与输出模块(直接输出)

def factor(n):          # 判断因数并输出分解式_直接输出
    if n == 1:
        print(n)
    else:
        i = 2
        while i <= n:                           # 若 i <= n 就进行分解, 直到分解到 i > n
            if n%i == 0:                        # 如果能整除, 则分解出因数 i
                n = n/i
                print(i, end='')
                if i <= n:                      # 如果未分解完, 就打印'*'号
                    print(' * ', end='')
            else:                               # 如果不能整除, 则令 i + 1
                i += 1

#        因数分解与输出模块(字符串列表输出)

def factor(y):          # 判断因数并输出分解式_汇总到字符串列表输出
    if y == 1:
        print(y)
    else:
        result = []
        i = 2
        while i <= y:                           # 若 i <= n 就进行分解, 直到分解到不能分解
            if y%i == 0:                        # 如果能整除, 则分解出因数 i 加入到列表当中
                y = y / i
                result.append(str(i))
            else:                               # 如果不能整除, 则令 i + 1
                i += 1
        print(' * '.join(result))

#        集(缝)成(合)

# 缝合
n = input('请输入小于1000的正整数: ')
n = inex(n)
if type(n) == int:
    print(n, '= ', end='')
    factor(n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值