寻找最大回文数(未完待续)

来源:互联网 发布:深圳软件产业基地2栋 编辑:程序博客网 时间:2024/05/29 13:50

有一道笔试题:

回文数是指无论从左往右读还是从右往左读的都是一样的数。

由两个2位数相乘得到的最大回文数是9009(9009= 91 * 99),请编程计算由两个3位数相乘能够得到的最大回文数。


C语言算法实现如下:


/* ** ** Created Date:  2011/09/22 ** Description:   寻找两个3位数相乘得到的最大回文数。 ** Last Modify:   2012/05/21 ** */   #include <stdlib.h>#include <stdio.h>#include <string.h>/* ** ** Description:   判断一个数是否为回文数。 ** Last Modify:   2012/05/21 ** */ int isPalindrome(int m){char pm[20];      /*初始化一个存储空间,用来存放要判断的数*/int length,i;itoa(m,pm,10);     /*把要判断的数转化为字符,更方便判断*/length = strlen(pm);for(i=0; i<length/2; i++){if(pm[i]!=pm[length-i-1])    /*对称部分是否相等*/break;}if(i==length/2)return 1;else return 0;}/* ** ** Description:   主函数,用来找出两个3位数相乘所有的回文数,并打印输出,**                      最后再查找并打印输出最大的回文数。 ** Last Modify:   2012/05/21 ** */ int main(){int i,j,num; int result=0; /*用来存放最大回文数*/for(i=999; i>100; i--)for(j=i-1; j>100; j--){num=i*j;if(isPalindrome(num)){printf("%8d",num);if(result<num)result=num;}}printf("\nThe max Palindrome is %8d\n ",result);return 0;}



原创粉丝点击