问题4
回文数字两种方式相同。由两个2位数字的乘积制成的最大回文是9009 = 91×99。找到由两个3位数字的乘积制成的最大回文。
这是我的代码如下。我在两个2位数字的产品上尝试我的代码,它打印9009(正确答案)。但对于3位数字,正确的答案是906609,我的答案是956459.我不知道我的代码有什么问题,请帮忙。感谢。
let num;//product of two numbers
let paNum=[];//array for palindrome number
for(i=100;i<1000;i++)
{
for (j=100;j<1000;j++)
{
num = i*j;
str= num.toString();//change the number to a string
if (str.substr(0,1) == str.substr(-1,1) && str.substr(1,1) == str.substr(-2,1))
{
paNum.push(num);
}
else{};
};
};
console.log(paNum);
console.log(Math.max(...paNum));
答案 0 :(得分:0)
我通过以下修改获得了正确答案。
for(i=100;i<1000;i++) {
for (j=100;j<1000;j++){
num = i*j;
str= num.toString();//change the number to a string
let len = str.length - 1;
let checkedDigit = [];
//Iterate the string from 0 to string length/2 and check whether it is a palindrom.
for (k = 0; k < str.length/2; k++) {
if (str.substr(k, 1) === str.substr(len - (len + 1 + k), 1)) {
//If the two corresponding digits are equal, add a true. (Else false)
checkedDigit[k] = true;
} else {
checkedDigit[k] = false;
}
}
function checkDigit(val) {
return val === true;
}
//Check whether all the elements in the checkedDigit array are true.
if (checkedDigit.every(checkDigit)) {
paNum.push(num);
}
};
};
console.log(paNum);
console.log(Math.max(...paNum));