项目欧拉概率。 4最大的回文产品

时间:2015-04-18 18:18:22

标签: java

https://projecteuler.net/problem=4

回文数字两种方式相同。由两个2位数字的乘积制成的最大回文是9009 = 91×99。

找出由两个3位数字的乘积制成的最大回文。

这是我的代码,我发现答案为580085,但这不是正确的答案:

    public class asdas {

    public static void main(String[] args) {
        int a=100,b=100,answer=0;
        while(a<=999)
        {
            b=100;
            while(b<=999)
            {
                int product=a*b;
                int reverse=0;

                while(product>0)
                {
                    int lastDigit=product%10;
                    reverse=(reverse*10)+lastDigit;
                    product=product/10;
                }
                product=a*b;
                if(product==reverse)
                {
                    answer=product;
                }
                b++;
            }
            a++;
        }
        System.out.println(answer); 
    }
}

1 个答案:

答案 0 :(得分:3)

问题在于:

if(product==reverse)
{
    answer=product;
}

你假设如果找到回文,它就是最大的。但事实并非如此。

例如,在100 * 102之后计算101 * 100,即使后者更大。事实上,在计算998 * 999(997,002)之后,你计算出999 * 100(99,900),这几乎要小10倍!

您应该添加另一项检查以确保新产品更高:

if(product==reverse && product>answer) {
    answer = product;
}