Проект Эйлера #4 в Python цикл while эффективности


Постановка задачи для задачи проект Эйлера 4 выглядит следующим образом:

Число-палиндром читается и в обе стороны. Самый большой палиндром, изготовленные из произведения двух 2-разрядных чисел составляет 9009 = 91 × 99. Найдите самый большой палиндром, изготовленные из произведения двух 3-значных чисел.

Хотите сделать этот код более эффективным. Я использую переменную для передачи в функцию, так что ответ на ИНЦ различной длины может быть определена. Это было самое эффективное, что я смог придумать. Какие-либо предложения?

def largestPalindromeProduct(digits):
    num=int(digits*"9")
    maxPalindrome=0
    i=int(num)
    floor=int(num/10) if digits > 1 else -1
    while i > floor:
        j=i
        while j > floor:
            val=str(i*j)
            if val==val[::-1]:
                floor=j
                maxPalindrome=max(maxPalindrome,i*j)
            j-=1
        i-=1
    return maxPalindrome

print(largestPalindromeProduct(3))


249
2
задан 16 февраля 2018 в 06:02 Источник Поделиться
Комментарии