一个回文数指的是从左向右和从右向左读都一样的数字。最大的由两个两位数乘积构成的回文数是9009 = 91 * 99.
找出最大的有由个三位数乘积构成的回文数。
#def is_palindromic(x):
# x_str = str(x)
# if x_str == x_str[-1::-1]:
# return True
# else:
# return False
def is_palindromic(x):
""" 判断是否回文 """
x_digit = get_digit(x)
x_len = len(x_digit)
for i in range(int(x_len / 2) + 1):
if x_digit[i] != x_digit[x_len-1-i]:
return False
return True
def get_digit(x):
""" 获取x的各位上的数字list """
digit = []
while x:
digit.append(x % 10)
x = x // 10
return digit
n = 3
# 最大3位数组成的数~最小3位数组成的数
for i in range(pow(pow(10, n) - 1, 2), pow(pow(10, n-1), 2) - 1, -1):
if not is_palindromic(i):
continue
i_sqrt = int(pow(i, 0.5))
flag = False
for i_ in range(i_sqrt, 99, -1):
# i / i_ 越来越大
if i / i_ >= pow(10, n):
break
if i % i_ == 0:
flag = True
break
if flag:
break
print(i)