寻找最大回文数 - 拣尽寒枝 - 博客频道 - CSDN.NET
回文数是指无论从左往右读还是从右往左读的都是一样的数。
由两个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;
- }