1. 如果是两个数之间的关系
只有两个数:最小公倍数 = 两数之积/最大公约数
def gcd(d1, d2):
# 获取最大公约数--碾转相除法
r = d1 % d2
if r:
return gcd(d2, r)
return d2
if __name__ == '__main__':
print(gcd(15, 20))
# 最小公倍数
print(15 * 20 / gcd(15, 20))
2. 多个数之间的最小公倍数与最大公约数
2.1 最大公约数流程
a = [100, 1000, 60, 30]
def greatest_common_divisor(arr):
arr = sorted(arr)
first_num = arr[0]
while True:
result = True
for i in arr:
if i % first_num != 0:
result = False
break
if result:
return first_num
else:
first_num -= 1
if __name__ == '__main__':
print(greatest_common_divisor(a))
############################################
import math
a = [15, 18, 21]
def gcdm(arr):
gcd = math.gcd(arr[0], arr[1])
for i in range(1, len(arr) - 1):
gcd = math.gcd(arr[i], arr[i + 1])
return gcd
if __name__ == '__main__':
print(gcdm(a))
2.2 最小公倍数流程
a = [100, 1000, 60, 30]
def least_common_multiple(arr):
arr = sorted(arr)
max_num = arr[-1]
while True:
result = True
for i in arr:
if max_num % i != 0:
result = False
break
if result:
return max_num
else:
max_num += 1
if __name__ == '__main__':
print(least_common_multiple(a))