“回文数猜想”的程序
程序代码:
//“回文数猜想” //从任意一个两位数或两位以上的自然数开始,将这个数与它的逆序数相加,得到一个新数,再用这个新//数与它的逆序数相加,不断重复这个操作,经过若干的逆序数相加,可能得到一个回文数。 //程序开始运行,要求用户首先输入一个十进制整数; //计算机列举出获得回文数的步骤; //给出是否找到回文数及其数值的答案。 #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; }