#include<stdio.h>
int shori(int n)
{
int m=0;
if (n>0){
while(n>0){
m=m*10+n%10;
n/=10;
}
}
return(m);
}
int main(void)
{
int n,m,k,i;
for(n=100;n<=199;n++){
k=0;
printf("%d\n",n);
m=shori(n);
while(n!=m){
n=n+m;
k++;
printf("%d\n",n);
if(k==50)break;
m=shori(n);
}
if(n==m){
printf("\n");
}
else{
printf("不一致%d\n",n);
}
}
return(0);
}
回文数にならないという定義が決められている問題ではないので何をもって回文数にならない数値と判断していいかわからないのですが、とりあえず次のような説をもとにプログラムを作りました。
「まだ証明はされていないが, 196のようないくつかの数字は回文数にならないと考えられている. 反転したものを足すという操作を経ても回文数にならないものをLychrel数と呼ぶ. 先のような数の理論的な性質により, またこの問題の目的のために, Lychrel数で無いと証明されていない数はLychrel数だと仮定する.
更に, 10000未満の数については,常に以下のどちらか一方が成り立つと仮定してよい.
1.50回未満の操作で回文数になる
2.まだ誰も回文数まで到達していない」
結果の表示の仕方的には、
例
196
887
1675
7436
13783
52514
94039
187088
1067869
10755470
18211171
35322452
60744805
111589511
227574622
454050344
897100798
1794102596
156182975
735464626
1361929163
686253498
1580606184
2101699739
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
-1403241137
不一致 196
というかんじにしたいのですがどなたかご教授ください。