目录
简单代码算出最大公约数,最小公倍数:
# 最大公约数和最小公倍数
a = int(input('please enter 1st num:'))
b = int(input('please enter 2nd num:'))
s = a * b
while a % b != 0:
a, b = b, (a % b)
print(b, '是最大公约数')
print(s//b, '是最小公倍数')
辗转相除法得到最大公约数:
# 思想:求出每个正数的质因式子,max和for循环实现
def max_div(m, n):# 得到最大公约数
#算法:除法, 函数作用较为单一
r = 1
while True:
r = m % n
if r == 0:
return n
m = n
n = r
两数相乘倒序最小公倍数:
def min_times(m, n):
# 这里不要用 m = max(m, n) n = min(m, n)后面的n比较的值是更新的m和原来的n
_min = m * n
for i in range(m * n, m - 1, -1):
if i % m == 0 and i % n == 0 and i < _min:
_min = i
return _min
分解质因式, 打印输出, 并且存到列表
def fun(n):
x = 1
flag = True
lst = []
print("{}=".format(n), end='')
while n != 1:
x += 1
while n % x == 0:
lst.append(x)
n /= x
if flag:
flag = False
print(x, end='')
else:
print("*{}".format(x), end='')
print()
return lst
主程序:
if __name__ == '__main__':
m = int(input('Enter a integer number:'))
n = int(input('Enter the second integer number:'))
print('最大的公约数为', max_div(m, n))
print('最小公倍数为', min_times(m, n))
由质因式得到最小公倍数:
l1 = fun(m)
l2 = fun(n)
for i in l1:
if i not in l2:
l2.append(i)
k = 1
for i in l2:
k *= i
print('最小公倍数为:', k)