首页 > 试题广场 >

分别编写求两个整数的最大公约数的函数hcf和求最小公倍数

[问答题]

分别编写求两个整数的最大公约数的函数hcf和求最小公倍数的函数lcd。主函数已给出,其从键盘接收两个整数,调用这两个函数后输出结果。

(提示:求最大公约数可用辗转相除法。即将大数作为被除数,小数作为除数,若二者余数不为0,则将小数作为被除数,余数作为除数,…直到余数为0。求最小公倍数则用两数的积除以最大公约数即可。)

 def lcf(a, b):
    if a > b:
        a, b = b, a
    c = a * b
    for i in range(1, a + 1):
        if i * b % a == 0:
            l = i * b
            return l
def hcf(a, b, l):
    if a * b / l == 1:
        print('无最大公约数')
        return
    return int(a * b / l)

发表于 2019-06-10 21:11:21 回复(0)

#coding=utf-8 #https://www.nowcoder.com/questionTerminal/175399ed945340c0a57f484710dc30a1?mutiTagIds=573&orderByHotValue=1&questionTypes=000010 ''' 分别编写求两个整数的最大公约数的函数hcf和求最小公倍数的函数lcd。 主函数已给出,其从键盘接收两个整数,调用这两个函数后输出结果。     (提示:求最大公约数可用辗转相除法。即将大数作为被除数,小数作为除数,         若二者余数不为0,则将小数作为被除数,余数作为除数,…直到余数为0。         求最小公倍数则用两数的积除以最大公约数即可。) ''' class Solution():  def hcf(self, a, b):   # 辗转相除法   if a < b:    a, b = b, a   while b != 0:    a, b = b, a%b   return a  def lcd(self, a, b):   # 用两数的积除以最大公约数   return a * b / self.hcf(a, b)
if __name__ == "__main__":  while True:   try:    s = Solution()    nums = raw_input().split()    a,b = map(int, nums)    print s.hcf(a, b), s.lcd(a, b)   except:    break

发表于 2018-06-08 14:28:59 回复(0)
def hcf(u,v):
    if v>u:
        u,v=v,u
    r=u%v
    while r!=0:
        u=v
        v=r
        r=u%v
    return v
 
def lcd(u,v,h):
    return u*v/h
 
u=int(input("请输入第一个整数:"))
v=int(input("请输入第二个整数:"))
h=hcf(u,v)
print("%d和%d的最大公约数为%d:"%(u,v,h))
l=lcd(u,v,h)
print("%d和%d的最小公倍数为%d:"%(u,v,l))

发表于 2017-12-28 15:27:57 回复(0)