我正在尝试用 c# 解决项目 euler #4,根据以前的帖子,我找不到任何用 c# 解决此问题的方法。
问题是:
回文数的两种读法都是一样的。由两个 2 位数字的乘积构成的最大回文数是 9009 = 91 99。
找出由两个 3 位数字的乘积构成的最大回文数。
下面是我的代码,但是当我查看它的流程时,我看不到我的错误。我该如何解决?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CS_11_project_Euler_problem_4
{
class Program
{
static void Main(string[] args)
{
int x, y;
string product="" , res="";
for (x = 100; x <= 999; x++)
{
for (y = 100; y <= 999; y++)
{
product = Convert.ToString(x*y);
if (product == new String(product.Reverse().ToArray()))
{
Console.WriteLine("X=" + x + " Y=" + y );
res = product;
Console.WriteLine("Polindrome is: " + res);
}
else { continue; }
}
}
}
}
}
我的代码找到的结果是 580085,这是我的输出截图。它显示每个结果回文数及其乘数。
Eventough 根据 projecteuler.net 我的结果不正确。我的输出之一是给我实际的结果。906609 。这是我的代码最后一个回文之前的第二个结果。我认为在嵌套的 for 循环中增加乘数是错误的,因为它无意中基于“最大的 X 给出最大的乘数逻辑”。为了防止它,我将再次将我的 res 和 product 转换为整数,并始终将更大的 product 结果保留为变量 product