【问题标题】:Largest palindrome product python最大回文积python
【发布时间】:2014-06-07 17:04:14
【问题描述】:

我试图做的是找到由两个 3 位数字的乘积构成的最大回文。 (下面的代码就是这样)现在我知道最大的数字是 906609 或 913 * 993。现在我遇到的问题是下面的代码找不到那个数字。由于代码现在它发现 90909 是最大的

for x in xrange(0, 1000):
    for y in xrange(0, 1000):
        #print '%d * %d = %d' % (x, y, x*y)
        num = (x * y)
        q = list(str(x * y))
        q.reverse()
        w = q
        #print(w)
        s = filter(str.isdigit, repr(q))
        q = int(s)
        #print(q)
        if num == q:
            hold3 = num, q, x , y
            print(hold3)

print(hold3)

现在,如果我将 for 中的数字更改为 914 和 994。它会给我 906609 的答案。 我想知道为什么我会得到两个不同的号码。对不起,我对 python 很陌生。

for x in xrange(0, 914):
    for y in xrange(0, 994):
        #print '%d * %d = %d' % (x, y, x*y)
        num = (x * y)
        q = list(str(x * y))
        q.reverse()
        w = q
        #print(w)
        s = filter(str.isdigit, repr(q))
        q = int(s)
        #print(q)
        if num == q:
            hold3 = num, q, x , y
            print(hold3)

print(hold3)

【问题讨论】:

  • 你应该使用xrange而不是x range
  • x 范围是错字,否则不会运行
  • @MartinKonecny 谢谢,当我打字的时候,我忘了把它保留为一个。

标签: python


【解决方案1】:

两个代码都找到 906609。但是,第一个代码用后面的结果覆盖它。

你需要检查你当前找到的回文是否比你之前找到的要大,如果没有就忽略它。

对您的代码稍作调整:

largest = 0
for x in xrange(0, 1000):
    for y in xrange(0, 1000):
        #print '%d * %d = %d' % (x, y, x*y)
        num = (x * y)
        q = list(str(x * y))
        q.reverse()
        w = q
        #print(w)
        s = filter(str.isdigit, repr(q))
        q = int(s)
        #print(q)
        if num == q and num > largest:
            largest = num
            hold3 = num, q, x , y
            print(hold3)

print(hold3) # correctly shows 906609 is the largest number

【讨论】:

  • 谢谢!工作完美,从来没有意识到我正在覆盖最大的。再次感谢!
【解决方案2】:

这是因为906609 是最大的回文乘积,但不是对应于x 最大值的回文数(999,与y == 91)。

更新前检查:

        if num == q and num > hold3[0]:

您将需要初始化,例如hold3 = [0]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多