寻找六位回文数。适用于四位和五位数字

Finding six-digit palindrome number. Works for four and five digits

我必须找到回文数,它们是三位数字的乘积。我制作的程序适用于 2*2 和 3*2。但不是 3 * 3。为什么?我想不通。

#initialized variables

x = 999             
y = 999


 while x > 100

    while y > 100

        num = x*y

        #Reversing the digits

        a = num/100000
        b = num%100000
        c = b/10000
        d = b%10000
        e = d/1000
        f = d%1000
        g = f/100
        h = f%100
        i = h/10
        j = h%10
        rev = 100000*j+10000*i+1000*g+100*e+10*c+a

        #Checking for palindrome

        if rev == num
            puts num
        end
        y -= 1

    end
    x -= 1  

end

好吧,你的代码非常简单,除了你要反转数字。

我建议采取两个步骤来解决此问题:

  1. 将反向部分提取到一个单独的函数中,并编写一堆单元测试以确保它按照您的想法进行。我的直觉是事实并非如此。
  2. 如果这不能解决问题,请开始为整个事情编写测试。实际上,无论如何您都应该这样做。

您没有在 x 的每次迭代后将 y 重置为 999,因此您的程序实际上并未按预期迭代整个值范围。将 y = 999 撞到 while x > 100 下方。