Такой метод поиска натуральный делителей сам по себе довольно слабый в алгоритмическом отношении и достаточно малоэффективный на больших числах. Запускаем программу и смотрим что получается:
from math import sqrt
from time import time
while True:
n, d, t = int(input('n: ')), [], time()
m = int(sqrt(n))
if n == 1:
d = [1]
else:
for i in range(1, m + 1):
if n % i == 0:
d.append(i)
d.append(n // i)
if m * m == n:
d.remove(m)
d.sort()
for i in range(len(d)):
print('%4d) ' % (i + 1), d[i])
print(time() - t)
Без печати всего списка делителей вот за какие времена (в секундах) выполняется вычисление этих списков дроидом (смартфонным Пайтоном):

Уже для n=1000000000000 время получается около секунды, что довольно много, и поэтому есть смысл весь алгоритм тупого перебора потенциальных делителей от 1 до ✓n поменять на более умный. Например, можно один раз вычислить список простых чисел, например, от 1 до миллиарда, а уж дальше числа n до квинтиллиона включительно факторизовать при помощи найденного списка простых чисел, что окажется неимоверно быстрее чем простой перебор, реализованный в вышеприведённой программе, а список всех делителей чисел дальше будет получаться автоматически. Если исследуемое на делители целое число меньше, допустим ста миллиардов, то и смысл в оптимизациях как-то сразу отпадает.
Кстати, если речь идёт о всех делителях чисел, тогда отрицательные делители тоже надо учитывать!