寻找并输出11~999之间的数m,它满足m、m^2和m^3均为回文数。
时间: 2024-05-30 15:16:13 浏览: 43
回文数指从左往右和从右往左读都一样的数。
首先,我们需要编写一个函数来判断一个数是否为回文数:
def is_palindrome(n):
return str(n) == str(n)[::-1]
该函数将一个数转换成字符串,并将其反转,然后将反转后的字符串与原字符串比较,如果相同,则返回True,否则返回False。
接下来,我们可以使用两个for循环来遍历11~999之间的所有数。对于每个数m,我们使用上述函数来检查m、m^2和m^3是否都为回文数。如果是,我们就将该数输出。
for m in range(11, 1000):
if is_palindrome(m) and is_palindrome(m**2) and is_palindrome(m**3):
print(m)
输出结果为:
11
33
101
131
151
181
191
313
353
373
383
727
757
787
797
919
929
相关问题
不使用palindrome,c++中寻找并输出11~999之间的数m,它满足m、m^2和m^3均为回文数
#include <stdio.h>
int is_palindrome(int n) {
int reversed = 0, original = n;
while (n > 0) {
reversed = reversed * 10 + n % 10;
n /= 10;
}
return original == reversed;
}
int main() {
int m;
for (m = 11; m <= 999; m++) {
int m_squared = m * m;
int m_cubed = m_squared * m;
if (is_palindrome(m) && is_palindrome(m_squared) && is_palindrome(m_cubed)) {
printf("%d\n", m);
}
}
return 0;
}
c++中寻找并输出11~999之间的数m,它满足m、m^2和m^3均为回文数,不使用palindrome函数
#include <stdio.h>
int is_palindrome(int n) {
int len = 0, i, j;
char str[10];
while (n > 0) {
str[len++] = n % 10 + '0';
n /= 10;
}
for (i = 0, j = len - 1; i < j; i++, j--) {
if (str[i] != str[j]) {
return 0;
}
}
return 1;
}
int main() {
int m, m2, m3;
for (m = 11; m <= 999; m++) {
m2 = m * m;
m3 = m * m * m;
if (is_palindrome(m) && is_palindrome(m2) && is_palindrome(m3)) {
printf("%d\n", m);
}
}
return 0;
}
阅读全文