寻找六位回文数。适用于四位和五位数字
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
好吧,你的代码非常简单,除了你要反转数字。
我建议采取两个步骤来解决此问题:
- 将反向部分提取到一个单独的函数中,并编写一堆单元测试以确保它按照您的想法进行。我的直觉是事实并非如此。
- 如果这不能解决问题,请开始为整个事情编写测试。实际上,无论如何您都应该这样做。
您没有在 x
的每次迭代后将 y
重置为 999,因此您的程序实际上并未按预期迭代整个值范围。将 y = 999
撞到 while x > 100
下方。
我必须找到回文数,它们是三位数字的乘积。我制作的程序适用于 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
好吧,你的代码非常简单,除了你要反转数字。
我建议采取两个步骤来解决此问题:
- 将反向部分提取到一个单独的函数中,并编写一堆单元测试以确保它按照您的想法进行。我的直觉是事实并非如此。
- 如果这不能解决问题,请开始为整个事情编写测试。实际上,无论如何您都应该这样做。
您没有在 x
的每次迭代后将 y
重置为 999,因此您的程序实际上并未按预期迭代整个值范围。将 y = 999
撞到 while x > 100
下方。