尋找最大回文數(未完待續)
阿新 • • 發佈:2019-02-01
有一道筆試題:
迴文數是指無論從左往右讀還是從右往左讀的都是一樣的數。
由兩個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; }