largest = 0;
num = 0;
temp = 0;
num_flip = 0;
for x = 100 : 999
for y = x : 999
num = x*y;
temp = num2str(num);
num_flip = str2double(fliplr(temp));
if num/num_flip == 1
largest = num;
one = x;
two = y;
end
end
end
我正在尝试找到由两个3位数字的乘积制成的最大回文,但由于某种原因,我的循环停在x = 924和y = 962,但我知道这不是答案。该代码适用于2位数字(10:99)。
答案 0 :(得分:0)
您没有测试最大是否真的是该代码的最大值。当您经历循环时,可能会在较大的回文后检测到较小的回文,并且您将 重新分配给它。
尝试使用新增的回文大于当前 最大 的附加测试:
largest = 0;
num = 0;
temp = 0;
num_flip = 0;
for x = 100 : 999
for y = x : 999
num = x*y;
temp = num2str(num);
num_flip = str2double(fliplr(temp));
if ((num/num_flip) == 1) && (num > largest)
largest = num;
end
end
end
我删除了这些作业
one = x;
two = y;
因为它不清楚你的问题是什么。如果出于未显示的原因需要将它们添加回来。