代码思考 | 豆包MarsCode AI刷题

42 阅读2分钟

首先,函数  solution  定义了两个参数  n  和  k  ,分别决定数组的长度和起始倍数。 比如, n = 3  表示我们要生成一个包含 3 个数的数组, k = 1  就是从 1 开始找倍数。 然后,通过一个空数组  elements  来存储找到的倍数。 从  current = k  开始,也就是起始倍数。 接着,有一个  while  循环,只要数组长度小于  n  ,就会一直执行。 在循环中,判断当前数是否在数组中,如果不在,就添加进去。 比如,第一次循环, current = k  ,如果不在数组中,就添加。 每次循环结束,都更新  current  为下一个  k  的倍数。 这样不断找到新的倍数添加到数组。 最后,用  sum  函数计算数组中所有元素的和,返回这个和。

在  if name == 'main':  部分,就是对函数进行调用和结果的检验。 比如  print(solution(n=3, k=1) == 6)  ,当  n = 3  且  k = 1  时,找到的倍数是 1、2、3,它们的和正好是 6 ,所以打印  True  。

第 1 行,定义了一个叫  solution  的函数,它有两个参数  n  和  k  ,这俩分别决定数组长度和起始倍数。 第 3 行,先弄了个空数组  elements  ,准备存符合条件的数。 第 6 行,把  current  设成  k  ,从  k  开始找倍数。 第 7 行,有个  while  循环,只要  elements  数组长度小于  n  ,就一直干活。 第 9 行,如果当前的数  current  不在  elements  数组里,那就执行下面的。 第 10 行,把不在数组里的  current  加进  elements  数组。 第 12 行,把  current  变成下一个  k  的倍数。 第 15 行,用  sum  函数算出  elements  数组里所有数的和,存到  result  里。 第 17 行,最后把算好的和  result  给返回了。

在  if name == 'main':  这部分,分别调用了  solution  函数,然后打印出函数返回值跟预期结果是不是一样。

比如说,在  print(solution(n=3, k=1) == 6)  这里,当  n = 3  、  k = 1  时,依次找到 1 的倍数 1、2、3 放进数组,数组和是 6,跟预期一样,所以就打印  True  。