项目欧拉问题第4号

1 投票
11 回答
10988 浏览
提问于 2025-04-16 17:50
n = 0
for a in xrange(999, 100, -1):
    for b in xrange(a, 100, -1):
        x = a * b
        if x > n:
            s = str(a * b)
            if s == s[::-1]:
                 n = a * b
print n

我有一个关于这个解决方案的问题,链接在这里:这个问题。我知道这个答案是对的,但我想知道在 xrange(999,100,-1) 中,为什么会有 -1 这个数字。请解释一下,a 和 b 的循环是怎么回事。我还是个新手呢 :)

11 个回答

1

xrange 函数有三个参数:startstopstep。它的作用是生成一系列数字,从 start 开始,一直到 stop,但不包括 stop 本身。如果 startstop 大,那就需要提供一个负的步长。

简单来说,xrange(999, 100, -1) 会给你一个列表,内容是 [999, 998, ..., 101]

5

这里的 -1 表示一个负的步长,也就是说,从 999 开始往下走,一直到 100,但不包括 100。

7

xrange()的第三个参数是增量值。默认值是1,这意味着计数器会向上增加。如果你想让计数器向下减少,可以用-1。这样你的计数器a就会从999数到101(xrange()这个迭代器会在到达第二个参数值之前停止)。

如果你想了解更多,可以查看xrange()的文档

撰写回答