我对编程很陌生,正在通过Project Euler帮助我学习。我现在正处于问题4,挑战是这样做:
回文数字两种方式相同。最大的回文 由两个2位数字的乘积制成的9009 = 91×99。
找到由两个3位数的产品制成的最大的回文 号。
来源:https://projecteuler.net/problem=4
我决定用两个for循环来设置100-999的整数,将它们相乘,反转产品然后看看它们是否相同但是我的循环比999高得多且我可以'找出原因。这是代码:
// Problem 4 - Find the largest palindrome made
// from the product of two 3-digit numbers.
long result = 0;
for (int i = 100; i < 999; i++)
{
for (int j = 100; j < 999; i++)
{
long product = i * j;
long reverse = Convert.ToInt64(Maths.Reverse(product.ToString()));
if (product == reverse)
{
if (product > result)
{
result = product;
}
}
}
}
Console.WriteLine("Palindrome: " + result);
如果我包含此行来记录结果:
Console.WriteLine("i = " + i + ", j = " + j + ", SUM = " + i * j);
我可以看到我增加了无限的东西。
非常感谢任何帮助!
答案 0 :(得分:2)
for (int j = 100; j < 999; i++)
i++
应该是j++
。
for (int j = 100; j < 999; j++)
答案 1 :(得分:-1)
典型的,我发布问题的那一刻我意识到自己的错误。我太忙于专注于i循环,我在j循环中没有注意到这一点:
for (int j = 100; j < 999; i++)