Ваш алгоритм неверен. Второй if
должен быть на том же уровне, что и mult = x*y
.
Я немного изменил твой код. С кодом ниже вы видите, что алгоритм не останавливается. Это просто супер медленно. Вам придется подождать несколько минут.
pa = 0
for x in range(1, 10000):
if x % 100 == 0:
print(x)
for y in range(x, 10000):
m = x*y
if str(m) == str(m)[::-1]:
if m > pa:
pa = m
print(pa)
Я изменил второй range(1, 10000)
на range(x, 10000)
, чтобы исключить дубликаты, такие как 1 * 2 и 2 * 1, в один 1 * 2.
Если вы хотите ускорить, рассмотрите возможность перехода на C или C ++.
Также вы можете изменить порядок итераций для экстремального ускорения
for x in range(10000, 0, -1):
for y in range(10000, 0, -1):
m = x*y
if str(m) == str(m)[::-1]:
print(m)
exit(0)