python求公约数和公倍数,python最大公约数gcd

本文介绍了如何使用Python计算两个正整数的最大公约数和最小公倍数,包括质因数分解法和迭代求解的方法,并提供了相应的代码实例。

大家好,给大家分享一下python最大公约数最小公倍数,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!

公约数:亦称“公因数”,它是一个能被若干个整数同时均整除的整数。如果一个整数同时是几个整数的约数,称这个整数为它们的“公约数”;公约数中最大的称为最大公约数python做简单笑脸。对任意的若干个正整数,1总是它们的公因数。
公倍数:公倍数是指在两个或两个以上的自然数中,如果它们有相同的倍数,这些倍数就是它们的公倍数。公倍数中最小的,就称为这些整数的最小公倍数。
常见求法有:质因数分解法、短除法、辗转相除法、更相减损法。
详情见:
最大公约数
最小公倍数

以下用质因数分解法
使用集合

x=int(input("请输入第一个数:"))
list1=[]
for i in range(1,x+1):
    if x%i==0:
        list1.append(i) #list1.append(int(x/i))效果一样
    if i==x:
        A=set(list1)
        print(A)
        break
y=int(input("请输入第二个数:"))
list2=[]
for i in range(1,y+1):
    if y%i==0:
        list2.append(i)
    if i==y:
        B=set(list2)
        print(B)
        break
a=max(A&B)
print("%d和%d最大公约数是%d"%(x,y,a))
c=x
while True:
    if c%x==0 and c%y==0:
        print("%d和%d最小数公倍数是%d"%(x,y,c))
        break
    c+=1


另一种写法

L=[]
a=int(input("请输入一个数"))
b=int(input("请再输入一个数"))
if a>b:
    smaller=b
else:
    smaller=a
for i in range(1,smaller+1):
    if(a%i==0) and (b%i==0):
        L.append(i)
    continue
n=L[-1]
print("%d和%d的最大公约数是%d"%(a,b,n))
c=a              #print("%d和%d的最小公倍数是%d"%(a,b,a*b//n))
while True:
    if c%a==0 and c%b==0:
        print("%d和%d的最小公倍数是%d"%(a,b,c))
        break
    c+=1





改写成函数

def de_factor(x):
    '''分解因数'''
    list=[]
    for i in range(1,x+1):
        if x%i==0:
            list.append(i) #list1.append(int(x/i))效果一样
        if i==x:
            A=set(list)
            break
    return A
def min_max_muldiv(x,y):
    a=max(de_factor(x)&de_factor(y))
    c=x
    while True:
        if c%x==0 and c%y==0:
            b=c
            break
        c+=1
    return "%d和%d最大公约数是%d\n%d和%d最小数公倍数是%d"%(x,y,a,x,y,b)
if __name__ == '__main__':
    print(min_max_muldiv(25,55))

def min_max_muldiv(a,b):
    L=[]
    if a>b:
        smaller=b
    else:
        smaller=a
    for i in range(1,smaller+1):
        if(a%i==0) and (b%i==0):
            L.append(i)
        continue
    n=L[-1]
    c=a              #print("%d和%d的最小公倍数是%d"%(a,b,a*b//n))
    while True:
        if c%a==0 and c%b==0:
            v=c
            break
        c+=1
    return "%d和%d的最大公约数是%d\n%d和%d的最小公倍数是%d"%(a,b,n,a,b,v)
if __name__ == '__main__':
    print(min_max_muldiv(25,55))




Python中,最大公约数最小公倍数有多种方法: ### 利用math模块的gcd函数 Python的math模块提供了`gcd`函数,可高效计算两个或多个整数的最大公约数GCD)。最小公倍数可根据公式“最小公倍数 = 两整数的乘积 ÷ 最大公约数”来计算。示例代码如下: ```python import math # 定义两个整数 a = 3139 b = 2117 # 计算最大公约数 gcd_result = math.gcd(a, b) # 计算最小公倍数 lcm_result = a * b // gcd_result print(f"最大公约数: {gcd_result}") print(f"最小公倍数: {lcm_result}") ``` ### 辗转相除法 辗转相除法,也叫欧几里得算法,是最大公约数的经典算法。其原理是:两个整数的最大公约数等于其中较小的数两数相除余数的最大公约数最大公约数后,再根据公式计算最小公倍数。示例代码如下: ```python def gcd(a, b): while b: a, b = b, a % b return a # 定义两个整数 a = 3139 b = 2117 # 计算最大公约数 gcd_result = gcd(a, b) # 计算最小公倍数 lcm_result = a * b // gcd_result print(f"最大公约数: {gcd_result}") print(f"最小公倍数: {lcm_result}") ``` ### 递归法 递归法也是基于辗转相除法的原理,通过递归调用函数来计算最大公约数,再计算最小公倍数。示例代码如下: ```python def gcd(a, b): if b == 0: return a return gcd(b, a % b) # 定义两个整数 a = 3139 b = 2117 # 计算最大公约数 gcd_result = gcd(a, b) # 计算最小公倍数 lcm_result = a * b // gcd_result print(f"最大公约数: {gcd_result}") print(f"最小公倍数: {lcm_result}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值