Python 最大公约数

几个整数中公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。例如:12、16的公约数有1、2、4,其中最大的一个是4,4是12与16的最大公约数,一般记为(12,16)=4。12、15、18的最大公约数是3,记为(12,15,18)=3。

# 最大公约数

num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))
# 方式1 for循环
# 获取两个数值中较小的值
if num1 > num2:
    m_value = num2
else:
    m_value = num1
# 从1开始遍历较小的值,找到公约数并不断更新最大公约数
for value in range(1, m_value + 1):
    if num1 % value == 0 and num2 % value == 0:
        val = value

print(num1, '、', num2, '的最大公约数是:', val)


# 方式2 函数
def gcd(a, b):
    if a > b:
        g_value = b
    else:
        g_value = a
    for va in range(1, g_value + 1):
        if a % va == 0 and b % va == 0:
            va_max = va
    return va_max  # 返回最大公约数


print(num1, '、', num2, '的最大公约数是:', gcd(num1, num2))

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用不同的方法来求解两个数的最大公约数。引用中的方法是列举法,即从两个数中较小的数开始,逐个列举可能的公约数,并找出最大的公约数。代码示例如下: a=int(input("please input the first number:")) b=int(input("please input the second number:")) p,q=min(a,b),max(a,b) lst=[] for i in range(1,p+1): if p%i==0 and q%i==0: lst.append(i) gcd=max(lst) print(f"{a}和{b}的最大公约数为{gcd}") 另一种方法是累乘法,即逐步找出两个数的所有公约数,再将这些公约数累乘起来得到最大公约数。引用中的代码示例如下: a=int(input("please input the first number:")) b=int(input("please input the second number:")) m,n=a,b t=1 for i in range(2,min(a,b)): while (a%i==0 and b%i==0): t*=i a/=i b/=i print(f"{m},{n}的最大公约数为:{t}") 另外,还有一种方法是更相减损术,即不断用较大数减去较小数,直到两个数相等或相差为1,此时的两个数即为最大公约数。这种方法在《九章算术》中提到。引用中的算法描述如下。 根据以上方法,你可以选择一种适合你的方式来求解Python中的最大公约数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python最大公约数的五种常见方法](https://blog.csdn.net/m0_69265664/article/details/125708828)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值