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