本篇文章给大家谈谈python编程求两个数的最大公约数和最小公倍数,以及用python求两个数的最大公约数和最小公倍数,希望对各位有所帮助,不要忘了收藏本站喔。
# 最大公因数用math库计算,最小公倍数运用定理计算:两数乘积 = 两数的最大公因数 × 两数的最小公倍数
import math
def num(a,b):
GreatestCommonDivisor = math.gcd(a, b)
LeastCommonMultiple = math.lcm(a, b)
return GreatestCommonDivisor, LeastCommonMultiple
最大公约数
# 辗转相除法,返回最大公约数
def gcd(a, b):
while a != 0:
# 如果a>b,那么执行一次之后,a b交换值,效果为 a,b=b,a
# 如果a=b,那么执行一次之后,直接出结果
# 如果a<b,那么执行开始,辗转相除也就开始了
a, b = b % a, a
return b
# 辗转相除法,返回最大公约数
def gcd(a, b):
return a if b == 0 else gcd(b, a % b)
# 更相减损法,返回最大公约数
def gcd(a, b):
while a != b:
if a>b:
a, b=b, a-b
else:
a, b=b, b-a
return b
def jia(x, y):
# 获取最小值
smaller = y if x > y else x
# 从1开始找,满足条件一次,hcf就更新一次,记录的一直是公因数里较大的那个
# 循环结束时,最终的hcf就是最大的公因数
for i in range(1, smaller + 1):
if ((x % i == 0) and (y % i == 0)):
hcf = i
return hcf
def jian(x, y):
smaller = y if x > y else x
# 从他们之间的最小的那个开始找
# 因为数是逐渐减小的,所以第一次满足条件的那一个就是最大公约数,可直接跳出循环
while smaller>0:
if((x % smaller == 0) and (y % smaller == 0)):
break;
smaller-=1
return smaller
最小公倍数
# 定义函数,获取最小公倍数
def lcm(x, y):
greater = x if x > y else y
while True:
if ((greater % x == 0) and (greater % y == 0)):
lcm = greater
break
greater += 1
return lcm
# 两数乘积 = 两数的最大公因数 × 两数的最小公倍数
# 如果多于两个数就不存在这个性质了
def zhong(a, b):
num=a*b
while a != 0:
a, b = b % a, a
return int(num/b)