最大公约数和最小公倍数

最大公约数和最小公倍数(类型:数学问题)

 是什么?

公倍数(common multiple)是指在两个或两个以上的自然数中,如果它们有相同的倍数,这些倍数就是它们的公倍数。公倍数中最小的,就称为这些整数的最小公倍数(lowest common multiple)。最常用:分解质因数法思想,记为[a,b]

最大公约数,也称最大公因数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法辗转相除法更相减损法

解法:

方法①:质因数分解

m,n=map(int,input().split())
num_1=min(m,n)
num_2=max(m,n)
for i in range(num_1,0,-1):   
    if m%i==0 and n%i==0:
        break
print(i,end=' ')//求解最大公约数
while 1>0:
    if num_2%m==0 and num_2&n==0:
        break
    else:
        num_2+=1
print(num_2,end=' ')//求解最小公倍数

方法②:辗转相除法(递归法)

m,n=map(int,input().split())
def zuidagongyueshu(m,n):
     if n==0:
        return m
     return zuidagongyueshu(n,m%n)//其中(m%n)的大小小于(m/2)
zuidagongyueshu(m,n)

 

其思想:

就是要求最小公倍数时,先找到要求最小公倍数两个数的最大值,再将该数(求最小公倍数两个数的最大值)分别于那两个数(要求最小公倍数两个数)进行求余,看是否能被整除,若能过被整除,则该数数就为最小公倍数。否则,则需要将该数进行加一,再进行上述所做的能否两个数进行求余,是否能被整除,若还是不能则继续将该数进行加一,直到能满足条件。

而最大公约数与上述的做法类似,看代码就能明白。

 

posted @ 2022-02-20 20:18  天空之城—我的理想国  阅读(573)  评论(0)    收藏  举报