这个例子展示了如何使用symbol Math Toolbox™处理大整数及其十进制表示。
如果一个字符串向后读时是相同的,则称为回文。如果正整数的十进制表示为回文,则称其为回文。例如,191,313和5885都是回文。
考虑以下算法
从任意正整数开始 然后把它加到镜像上。
对得到的数字重复此步骤,直到获得回文。
例如,设N=89;然后前3次迭代给出……
最终,经过24次迭代后,您将得到回文8813200023188。
N =符号(89);为k=0: 0 s1 = char(N);s2 = fliplr (s1);如果比较字符串(s1, s2) disp (["迭代完成"num2str (k)])打破结束N = N + sym(s2);disp (N)结束
在迭代24中完成
算法是否每次都终止 ?
这个问题仍然是开放的,回文爱好者已经投入了许多CPU年
Case是问题名称的来源。为了在MATLAB™中解决这个问题,符号整数是有用的,因为它们的大小是无限的。使用的函数信谊
将十进制数字字符串转换为符号整数,并且字符
(不num2str
!)转换回来。
著名的调查
案例产生了巨大的数字。要查看一个整数有多少个小数,只需使用log10
:
N =符号(196);为k= 0:00 s1 = char(N);s2 = fliplr (s1);N = N + sym(s2);结束disp (['后面的数字'num2str (k)的迭代:char(装天花板(log10 (N)))));
1000次迭代后的位数:411