C++回文数的形成

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++回文数的形成

回文数的形成规则不知道数学上有没有证明。如果有的话,朋友可以告诉我,这里通过编程验证。

规则:任意的一个的十进制的整数,将其转过来后和原来的整数相加,得到新的整数后重复以上步骤,最终可以得到一个回文数。

#include

#define MAX 2147483648 //限制M+N的范围

long re(long int a)//求输入整数的反序

{

long int t;

for(t=0;a>0;a/=10)//将整数反序

t=t*10+a%10;

return t;

}

int nonre(long int s)//判断给定的整数是否为回文数

{

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))//判断整数与其反序相加后是否为回文数{

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");//输出得到的回文数}

1 2

相关文档
最新文档