编写一个程序,找出能被从1到给定数字n(包括n)的所有数字整除的最小正数(即最小公倍数)。
定义函数smallest_multiple()的函数,参数为n。
在函数内,返回能被从1到给定数字n(包括n)的所有数字整除而无余数的最小正数。
比如,对于输入5,最小公倍数是60,因为60能被1、2、3、4、5整除,且是最小的正数
题目来源:PythonTip
https://edu.py2fun.com/
代码如下(示例):
def smallest_multiple(n):
# 此处写你的代码
num = n # 最小公倍数最小值应大于等于该数组的最大值
while True: # 因为不知道确切的终止条件或者说终止条件过长时,用True作为条件,当条件满足时直接break退出最外层while循环
for i in range(1,n+1): # while循环内主体为for else 循环
if num % i == 0: # 判断1到n能不能整除num,如不能num+1,重新执行while循环;如果都能整除,则for循环正常执行完,到for else的else语句,而不是if else的else
continue
else:
num += 1
break
else: # for循环正常执行来到此句的else,执行break寻找最近的上层循环即while循环,所以此时退出while
break
return num
# 输入n
n = int(input())
# 调用函数
print(smallest_multiple(n))
示例输入:
5
示例输出:
60
本题解题思路已经写在代码注释中,不做过多解释。在上面的代码中又一次出现了for-else的用法,在之前的博客中我们也讲过for-else的实例,感兴趣的小伙伴点击前往观看。