主要内容

处理大型整数以解决196个问题

此示例显示如何使用符号数学工具箱™使用大型整数及其十进制表示。

parindromes.

如果在向后读取时,则表示字符串称为parindrome。如果其十进制表示是回文,则正整数被称为回文。例如,191,313和5885都是回文。

考虑以下算法

  • 从任何正整数开始 N 并将其添加到其镜像上。

  • 通过生成的数字重复此步骤,直到获得PAPINDROME。

例如,让n = 89;然后是前3个迭代给...

8. 9. + 9. 8. = 1 8. 7.

1 8. 7. + 7. 8. 1 = 9. 6. 8.

9. 6. 8. + 8. 6. 9. = 1 8. 3. 7.

最终在24次迭代之后,您将到达Parindrome 8813200023188。

n = sym(89);为了k = 0:100 s1 = char(n);s2 = pliplr(s1);如果Strcmp(S1,S2)DISP(['在迭代中完成'num2str(k)])休息结尾n = n + sym(s2);DISP(n)结尾

                 
                  
                   
                    187.
                  
                 

                 
                  
                   
                    968
                  
                 

                 
                  
                   
                    1837年
                  
                 

                 
                  
                   
                    9218.
                  
                 

                 
                  
                   
                    17347
                  
                 

                 
                  
                   
                    91718.
                  
                 

                 
                  
                   
                    173437
                  
                 

                 
                  
                   
                    907808
                  
                 

                 
                  
                   
                    1716517
                  
                 

                 
                  
                   
                    8872688
                  
                 

                 
                  
                   
                    17735476.
                  
                 

                 
                  
                   
                    85189247.
                  
                 

                 
                  
                   
                    159487405.
                  
                 

                 
                  
                   
                    664272356
                  
                 

                 
                  
                   
                    1317544822
                  
                 

                 
                  
                   
                    3602001953
                  
                 

                 
                  
                   
                    7193004016.
                  
                 

                 
                  
                   
                    13297007933
                  
                 

                 
                  
                   
                    47267087164
                  
                 

                 
                  
                   
                    93445163438
                  
                 

                 
                  
                   
                    176881317877
                  
                 

                 
                  
                   
                    955594506548
                  
                 

                 
                  
                   
                    1801200002107
                  
                 

                 
                  
                   
                    8813200023188
                  
                 
在迭代24完成

196个问题

算法是否终止了每个 N 还是

问题仍然是开放的,Palindrome Aficionados已经投入了许多CPU岁月 N = 1 9. 6. 案例给出了这个问题它的名字。为了在Matlab™中发挥此问题,符号整数是有用的,因为它们的大小是无限的。使用功能轶事将十进制数字的字符串转换为符号整数,以及char(不是num2str.!)转换回来。

调查着名 N = 1 9. 6. 案例产生真正巨大的数字。要查看整数有多少十进制数字,只需使用log10.

n = sym(196);为了k = 0:1000 s1 = char(n);s2 = pliplr(s1);n = n + sym(s2);结尾DISP([''数字后'num2str(k)'迭代:'Char(CEIL(log10(n)))]);
1000次迭代后的数字数:411