求三个数的最大公约数和最小公倍数
如题:求三个数的最大公约数和最小公倍数
代码块
这次试用一下python,不过没太关心鲁棒性
@sherry
#枚举法求最小公倍数
def decmax(a,b,c):
i=1;
while(1):
#f为三个数中最大数的整数倍
#死循环直到找到除以三个数均为0的数的通过break 跳出循环
f=max(a,b,c)*i
if((f%a==0 and f%b==0) and f%c==0):
break
i=i+1
return f
#辗转相除法求最大公约数
def gcd(a,b):
r=a%b
if(r==0):#当a%b=0时b为最大公约数
return b
else:#否则gcd(a,b)=gcd(b,a%b)
return (gcd(b,r))
def gcd_3(a,b,c):
return gcd(gcd(a,b),c)
#利用求大公约数求最小公倍数
def maxG(a,b,c):
return a*c*b*gcd_3(a,b,c)//(gcd(a,b)*gcd(a,c)*gcd(b,c))
#更相减损法求最大公约数
def sub(a,b):
while(a!=b):
if(a>b):#如果a>b
a=a-b#a=a-b
else:#否则
b=b-a#b=b-a
return a#当a=b时返回a即为最大公约数
def sub_3(a,b,c):
return sub(sub(a,b),c) #嵌套求取三个数的最大公约数
def f(a,b):
return a*b//gcd(a,b)#求两个数的最小公倍数
def F(a,b,c):
return f(f(a,b),c)#先求a,b的最小公倍数,与c求最小公倍数
s=input("请输入三个整数: 例如a,b,c")
a,b,c=s.split(',')
a=int(a)
b=int(b)
c=int(c)
if(a==0 and b==0 and c==0):
print("最大公约数为0")
print('最小公倍数为0')
else:
print('枚举法求得最大公约数:'+str(decmin(a,b,c)))
print('辗转相除法求得最大公约数:'+str(gcd_3(a,b,c)))
print('更相减损法求的最大公约数:'+str(sub_3(a,b,c)))
print('枚举法求得最小公倍数'+str(decmax(a,b,c)))
print('通过最大公约数求得三个数的最小公倍数:'+str(maxG(a,b,c)))
print('通过就嵌套求三个的最小公倍数'+str(F(a,b,c)))