Python学习打卡--day22(算法练习:求最大公约数)

方法一:

"""
_author:taozi
_date:20190521
_describe:求最大公约数
1-同时提取共有质因数
2-公有质因数连乘就是最大公约数
"""
def max_com_num(n, m):
    flag = True
    num = 1
    while flag:
        for x in range(2, int(n + 1)):
            if n / x == 1:  # 表示n不能继续分解了
                flag = False
            elif n % x == 0 and m % x == 0:  # 提取共有质因数
                n = int(n / x)
                m = int(m / x)
                num *= x
                break
    return num

max_common_num = max_com_num(66, 88)
print("最大公约数是:", max_common_num)




```python

> 方法二:

```python
"""
_describe:求最大公约数
1- 能同时被整除的数都是约数,for循环得到最大值
"""
def hcf(x, y):
    """该函数返回两个数的最大公约数"""

    # 获取最小值
    if x > y:
        smaller = y
    else:
        smaller = x

    for i in range(1, smaller + 1):
        if ((x % i == 0) and (y % i == 0)):
            hcf = i

    return hcf


# 用户输入两个数字
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))

print(num1, "和", num2, "的最大公约数为", hcf(num1, num2))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值