読者です 読者をやめる 読者になる 読者になる

Project Euler No.4

Matlab/Octave

R1001932

Project Eulerの第4問は「数字の回文」。

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.

Find the largest palindrome made from the product of two 3-digit numbers.

回文は前後どちらから読んでも同じものになる。2桁の数の積で作られる最大の回文数は9009 = 91 × 99である。3桁の数の積で作られる最大の回文数は何か。

回文チェックを行うために、数を文字列に変換しています。そのせいでなかなか実行速度の遅いプログラムになってしまいました。また、数を大きな方から順にチェックすればいいのに、小さい方から順にチェックしているのも遅さの原因になっています。それでも結果が出ているので、まぁいいか、と。

maxnum = 0;
for n1 = 100:998
  for n2 = n1+1:999
    num = n1 * n2;
    if num == str2double(fliplr(num2str(num)))
      if maxnum < num
        maxnum = num;
      end
    end
  end
end
disp(maxnum);