回文数是指其各位数字左右对称的整数,如 121, 676, 94249 等,寻找并输出 11 ~ 999 之间的数 m,它满足 m、m平方、m立方均为回文数。
思考
判断回文数的方法虽然麻烦但是不难,比较简单。如何在程序中简单的完成判断回文数呢?
一个数 a = 123456;
我只要将它排序颠倒一下 b = 654321,如果 a == b 则是回文数,如果不相等则不是。
实现
代码:
#include <iostream>
using namespace std;
int isPalindrome(int);
int main(){
// 寻找并输出 11~999 之间的回文数
int min = 11;
int max = 999;
int i;
for(i = min; i < max; i++){
// 自己本身是回文数,平方、立方都是回文数
if(isPalindrome(i) && isPalindrome(i * i) && isPalindrome(i * i * i)){
cout << i << endl;
}
}
return 0;
}
int isPalindrome(int num){
int n,m;
m = 0;
n = num;
while(n > 0){
m = m * 10 + n % 10;
n = n /10;
}
return (num == m);
}
结果: