正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
数据范围:
def ggg(n, m): list = [] result = 0 for i in range(1, 10000000000): result = n * i if result % n == 0 and result % m == 0: list.append(result) break return min(list) while True: try: j, k = map(int, input().split()) print(ggg(j,k)) except: break可以参考参考 缺点是1000000000000那里,懒得改了
num=input() num_list=num.split() a = eval(num_list[0]) b = eval(num_list[1]) def ab(a,b): i = 1 while i%a != 0&nbs***bsp;i%b != 0: i += 1 return i print(ab(a,b))
test_list = [a,b] bigger = int(max(test_list.split())) multiple = 2 while (bigger*multiple) % int(min(test_list.split())) != 0: multiple += 1 print(bigger*multiple)
def gcd(a, b): """Return greatest common divisor using Euclid's Algorithm.""" while (a % b != 0): t = a % b a = b # 新的a用原来的b值 b = t # 新的b用原来的余数值 return b # 若a除以b能整除,则b就是两个数的最大公约数。 # 首先,从键盘键入两个数a和b的值,变量t来保存余数。用while循环来判断能否整除,根据“辗转相除法”,先用第一个数a÷b再将除数b赋给a, # 余数赋给b,循环往复,直到能整除时结束循环,此时的除数b即为最大公约数。 def lcm(a, b): """Return lowest common multiple.""" return a * b // gcd(a, b) while True: try: a, b = map(int, input().split()) print(lcm(a, b)) except: break
特别说明:若a<b,例如a=18,b=99。t=a%b=18%99=18;新的a用原来的b值————a=99;新的b用原来的余数值b=t=18。我们发现通过一次循环交换了a、b的值,这时就能满足a>b的条件了,再继续根据辗转相除的方法即可得到最大公约数。因此,无须顾及输入的两个整数a和b谁大谁小。
line = raw_input() line_split = line.split(' ') a = int(line_split[0]) b = int(line_split[1]) large = a if a >= b else b small = a + b - large diff = large-small i = 1 while True: if (i * diff) % small == 0: print i * large break else: i += 1
使用辗转相减法获得最大公约数,再用最大公约数获取商再相乘就可以 def gcd(a,b): while a!=b: if a>b: a= a-b else: b=b-a return a A,B=map(int,input().split()) maxnum = gcd(A,B) X = A/maxnum*B/maxnum*maxnum print(X)
# # 2020年11月15日11:38:07 # # 解法一:暴力遍历 # # 求两个数的最小公倍数 # def Common_multiple(A, B): # # 以两数中的最大值为步长遍历到两数相乘,求最小公倍数 # # 当两个数都较大时,算法过于耗时,其余情况下运算速度还可以 # m = max(A, B) # n = min(A, B) # for i in range(m, A*B+1, m): # if i%n == 0: # return i # while True: # try: # A, B = map(int, input().split()) # num = Common_multiple(A, B) # print(num) # except: # break # 解法二:辗转相除求最大公约数,利用公式求最小公倍数 # 求两个数的最大公约数数 def Common_divisor(A, B): # 求最大公约数 while B: A, B = B, A%B return A while True: try: A, B = map(int, input().split()) num = int(A*B/Common_divisor(A, B)) print(num) except: break