Javascript中最大的回文产品

elk*_*med 6 javascript math for-loop

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

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

我做了这个代码来找到解决方案,但Project Euler网站上的答案仍然不正确:

function Palindromic(x) {
    var pal = parseInt(x.toString().split('').reverse().join(''));

    if (pal === x)
        return true;
    else
        return false;
}

var x = 100,
    y = 100,
    product = x * y;

for (x; x <= 999; x++) {
    for (y = x; y <= 999; y++) {
        product = x * y;
        if (Palindromic(product)) {
            console.log(x + '*' + y + '=' + product);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的代码有问题吗?!无论如何,我得到的答案是888888,来自924*962

Sir*_*rko 6

我不认为,你的代码存在真正的问题.您只是不过滤最大的产品,这不一定是您的最后一个输出.只需为最大的产品添加额外的支票,例如:

var x, y, product, max = 0;

for (x = 100; x <= 999; x++) {
    for (y = x; y <= 999; y++) {
        product = x * y;
        if (Palindromic(product)) {
          if( max < product ) { // this is new
            max = product;
            console.log(x + '*' + y + '=' + product);
          }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这回来了

913*993 = 906609

作为最大的结果.