помогите разогнать код

нужно чтобы код работал с числами 10^12, не знаю что с ним делать

исходная задача: нужно рассчитать, сколько последовательностей с двумя 0 (ровно двумя, 000 уже не считается) на конце получится, если перебирать все системы счисления до n

n = int(input())
z = 0
for i in range(2, n+1)
    if n % i == 0:
        y = n // i
        if y % i != 0:
            z += 1
print(z)

Ответы (1 шт):

Автор решения: GrAnd

Перебор сразу сверху ограничить квадратным корнем из N. Т.к. в больших системах это число будет представлено меньше чем тремя знаками, и значит точно не будет оканчиваться двумя нулями.
Например: Число 100 в 10-чной системе счисления это минимальное трёхзначное число. Так что если исходное число, скажем, 99, то квадратный корень от него меньше 10, и проверять в десятичной (и выше) системе вообще не имеет никакого смысла.

n = int(input())
z = 0
for i in range(2, int(n**0.5)+1):
    if n % (i*i) == 0 and n % (i*i*i) != 0:
        z += 1
print(z)
→ Ссылка