可以利用floyd算法解决 ,算法参考了大佬的文章,很详细
最短路径——Dijkstra算法和Floyd算法_凌晨的咸鱼的博客-CSDN博客_floyd算法和dijkstra算法
十分感谢!
代码如下:
def func(x, y):
a, b = x, y
while b:
a, b = b, a % b
return x * y // a
n = int(input())
dp = [float('inf')] * (n + 1)
dp[1] = 0
for i in range(1, n + 1):
for j in range(1, 22):
if i + j > n:
break
dp[i + j] = min(dp[i + j], dp[i] + func(i, i + j))
print(dp[n])
最终答案为:10266837