Lee
Только можете еще раз обьяснить зачем n//d?
ну смотри, ты перебираешь делитель d от 2 до n. Допустим n у тебя 36, для простоты.
Вот ты взял 36 поделил на 2 (n%d) и оказалось что оно делиться без остатка.
ОК, записываем число 2 в делители.
НО у нас образовалось еще один делитель n//d (36/2=13) => 36/13=2, на которое число тоже делиться без остатка. И вовсе не обязательно ждать пока итератор дойдет до 13 чтобы и его тоже добавить в делитель. При таком подходе нужно перебирать числа не от 2 до n , а до корня квадратного из n. Что при порядке чисел в задании в тысячу раз уменьшает количество операций.
Тут больше математики чем програмирования, хотя при програмировании вот таким как раз приходиться заниматья.