1. 程式人生 > >尋找最大回文數(未完待續)

尋找最大回文數(未完待續)

有一道筆試題:

迴文數是指無論從左往右讀還是從右往左讀的都是一樣的數。

由兩個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;
}