Просто продолжайте беговую дорожку, тогда вам не нужен список:
largest = None
i = 1024
for k in range(i):
a = (k ** 4 - 74 * k ** 2 + 173) % 1000033
if not largest or largest[1] < a:
largest = (k, a)
print(largest)
Вывод:
(2, 999926)
PS i = 1048576
занял пару секунд и выплюнул:
(156865, 1000032L)
Обратите внимание, что где-то там переключились на длинные целые числа.Это с Python 2.6.1.
PPS Также обратите внимание, что этот метод находит только самый низкий индекс с максимальным.Чтобы получить самый высокий индекс, замените <
на <=
:
(843168, 1000032L)