题目转载:http://python.wzms.com/s/1/87
题目描述:
输入任一的自然数A, B, 求A , B的最小公倍数。
输入格式:
两个数,空格隔开
输出格式:
一个数,表示A、B的最小公倍数
集合
- 集合(set)是一个无序的不重复元素序列。
- 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
- 向集合中添加元素:s.add( x )
intersection()方法
- 描述:intersection() 方法用于返回两个或更多集合中都包含的元素,即交集。
- 语法set.intersection(set1, set2 ... etc)
- 参数:
- set1 -- 必需,要查找相同元素的集合
- set2 -- 可选,其他要查找相同元素的集合,可以多个,多个使用逗号 , 隔开
- 返回值:返回一个新的集合。
代码:
A, B = map(int, input().split())
# 第一步:求出两个数的最大公约数
# 1.1 求出A和B的所有因数,并加入到各自的因数集合里
A_factor_set = set()
for factor_A in range(1, A+1):
if A % factor_A == 0:
A_factor_set.add(factor_A)
B_factor_set = set()
for factor_B in range(1, B+1):
if B % factor_B == 0:
B_factor_set.add(factor_B)
# 1.2 从两个因数集合的交集中取出最大的数字,即为最大公约数
max_common_divisor = max(A_factor_set.intersection(B_factor_set))
# 第二步:应用公式求出最小公倍数,最小公倍数=两数的乘积/最大公约数
least_common_multiple = int((A*B) / max_common_divisor)
print(least_common_multiple)
运行结果: