回文数猜想

作者在 2010-12-09 09:33:27 发布以下内容
//“回文数猜想”
//从任意一个两位数或两位以上的自然数开始,将这个数与它的逆序数相加,得到一个新数,再用这个新//数与它的逆序数相加,不断重复这个操作,经过若干的逆序数相加,可能得到一个回文数。
//程序开始运行,要求用户首先输入一个十进制整数;
//计算机列举出获得回文数的步骤;
//给出是否找到回文数及其数值的答案。
#include<iostream>
#define MAX 2147483647
using std::cin;
using std::cout;
using std::endl;
void main()
{
    long reverse(long);
    bool judge(long);
    long n;
    int count=0;
    cout<<"请输入一个大于10的整数:"
        <<endl;
    cin>>n;
    if(n>=MAX||n<10)
    {
        cout<<"输入错误!"<<endl;
        return;
    }
    cout<<endl;
    cout<<"获得回文数的过程如下:"<<endl;
    while(!judge(n+reverse(n)))
    {
        if((n>=MAX||reverse(n)>=MAX)||(reverse(n)<=0))
        {
            cout<<"有限步骤内没有找到回文数!"<<endl;
            return;
        }
        else
        {
            cout<<"["<<++count<<"]:"<<n<<"+"<<
            reverse(n)<<"="<<reverse(n)+n<<endl;
            n+=reverse(n);
        }
    }
    cout<<"["<<++count<<"]:"<<n<<"+"<<reverse(n)<<"="<<reverse(n)+n<<endl;
    cout<<"获得回文数是: "<<n+reverse(n)<<endl;
}

long reverse(long n)
{
    long r;
    for(r=0;n>0;n/=10)
    r=r*10+n%10;
    return r;
}

bool judge(long s)
{
    bool success=false;
    if(reverse(s)==s)
    success=true;
    return success;
}
            
程序 | 阅读 953 次
文章评论,共0条
游客请输入验证码
浏览29757次