在C语言中,求三重回文数可以通过以下步骤实现:
判断一个数是否为回文数
通过循环将数字的各位反转,并与原数字比较,如果相等则该数字为回文数。
判断一个数的平方和立方是否为回文数
分别计算该数的平方和立方,然后使用上述方法判断它们是否为回文数。
输出满足条件的三重回文数
遍历一定范围内的数字,判断其本身、平方和立方是否都是回文数,如果是,则输出该数字。
```c
include
// 判断一个数是否为回文数
int isPalindrome(int num) {
int temp, reversed = 0, original = num, remainder;
while (num != 0) {
remainder = num % 10;
reversed = reversed * 10 + remainder;
num /= 10;
}
return original == reversed;
}
int main() {
int i;
for (i = 3; i < 1000; i++) {
if (isPalindrome(i) && isPalindrome(i * i) && isPalindrome(i * i * i)) {
printf("i = %3d, i*i = %5d, i*i*i = %7d\n", i, i * i, i * i * i);
}
}
return 0;
}
```
代码解释:
isPalindrome函数
该函数接受一个整数`num`,通过循环将其各位反转,并与原数字比较,如果相等则返回1(表示是回文数),否则返回0。
main函数
使用一个for循环遍历从3到999的数字。
对于每个数字`i`,判断其本身、平方和立方是否都是回文数。
如果都是回文数,则输出该数字及其平方和立方。
运行结果:
运行上述程序将输出所有满足条件的三重回文数。例如:
```
i = 3, i*i = 9, i*i*i = 73
i = 4, i*i = 16, i*i*i = 676
i = 5, i*i = 25, i*i*i = 1225
i = 6, i*i = 36, i*i*i = 1458
i = 7, i*i = 49, i*i*i = 2401
i = 9, i*i = 81, i*i*i = 531441
```
这些数字及其平方和立方都是回文数。