为什么Matlab没有返回回文数字?

时间:2013-04-27 05:11:31

标签: matlab

我创建了以下代码:

A = [0:1:999].*[0:1:999]';
B = mat2str(A);
B(B == fliplr([B]))

希望它能用回文数字过滤(前后相同,例如99,101,97479等)。我得到的数字不是回文我的代码有什么问题?

2 个答案:

答案 0 :(得分:3)

试试这个:

A = [0:1:999].*[0:1:999];
B = str2num( fliplr( num2str(A')))';
palNums = A(A == B);

palNums现在应仅包含回文数字。

答案 1 :(得分:-1)

您可以按照以下方式执行此操作:

A=10:999999;   %I am assuming you want to start from 10 since a single digit will always be palindrome.

for i=1:length(A)
    digits1 = sscanf(strrep(num2str(A(i),10),'.',''),'%1d')'; %If you want to support 
               %numbers more than 10 digits, replace above number accordingly.
    digits2=fliplr(digits1);
    if digits1==digits2
       palindrome(i)=1;
       fprintf('A palindrome\n');
    else
       palindrome(i)=0;
       fprintf('Not a palindrome\n');
    end
end