C++回文數(shù)的形成

字號:

回文數(shù)的形成規(guī)則不知道數(shù)學(xué)上有沒有證明。如果有的話,朋友可以告訴我,這里通過編程驗證。
    規(guī)則:任意的一個的十進(jìn)制的整數(shù),將其轉(zhuǎn)過來后和原來的整數(shù)相加,得到新的整數(shù)后重復(fù)以上步驟,最終可以得到一個回文數(shù)。
    #include
    #define MAX 2147483648 //限制M+N的范圍
    long re(long int a)//求輸入整數(shù)的反序
    {
    long int t;
    for(t=0;a>0;a/=10)//將整數(shù)反序
    t=t*10+a%10;
    return t;
    }
    int nonre(long int s)//判斷給定的整數(shù)是否為回文數(shù)
    {
    if(re(s)==s)
    return 1;//是返回1
    else
    return 0;//不是返回0
    }
    void main()
    {
    long int n,m;
    int count=0;
    printf("please input a number optionaly:");
    scanf("%ld",&n);
    printf("The genetation process of palindrome:\n");
    while(!nonre((m=re(n))+n))//判斷整數(shù)與其反序相加后是否為回文數(shù)
    {
    if((m+n)>=MAX)//超過界限輸出提示信息
    {
    printf("input error,break.\n");
    break;
    }
    else
    {
    printf("[%d]:%ld+%ld=%ld\n",++count,n,m,m+n);
    n+=m;//累加
    }
    }
    printf("[%d]:%d+%ld=%ld\n",++count,n,m+n);
    printf("Here we reached the aim at last.\n");//輸出得到的回文數(shù)
    }