def palindrome(n):
""" сомножители макс. палиндрома длины n """
lim = 10 ** ((n + 1) // 2)
for i in range(lim - 1, 0, -1):
s = str(i)
pq = int(s[:n // 2] + s[::-1])
for p in range(int(pq ** .5) + 1, lim):
if not pq % p:
return p, pq // p
N = 16
for x in range(3, N):
p, q = palindrome(x)
print("{:>{}d} * {:>{}d} =={:>{}d}".format(
p, N // 2, q, N // 2, p * q, N))
def palindrome(n):
""" максимальный палиндром длины n*2 """
scale = 10 ** n
for i in range(scale - 1, 0, -1):
pq = i * scale + int(str(i)[::-1])
for p in range(scale - 1, 0, -1):
if p * p < pq:
break
if not pq % p:
return pq
print(palindrome(3))
print(palindrome(6))
p.s Галочка стоит.