最大公约数和最小公倍数(类型:数学问题)
是什么?
公倍数(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)
其思想:
就是要求最小公倍数时,先找到要求最小公倍数两个数的最大值,再将该数(求最小公倍数两个数的最大值)分别于那两个数(要求最小公倍数两个数)进行求余,看是否能被整除,若能过被整除,则该数数就为最小公倍数。否则,则需要将该数进行加一,再进行上述所做的能否两个数进行求余,是否能被整除,若还是不能则继续将该数进行加一,直到能满足条件。
而最大公约数与上述的做法类似,看代码就能明白。