Мной было проверено, что он быстрее двух самых быстрых способов поиска делителей числа: поиск до корня и разложение числа на простые множители с последующим их перебором.
Как он работает:
-
Раскладывает число на простые множители
-
Идёт по списку простых множителей (
i
) и списку всех известных делителей числа (j
):
2.1. Если (простой множитель с индексом i
) * (известный делитель с индексом j
) не встречается в списке известных делителей числа, то в список это значение не добавляется (чтобы каждый раз цикл не проходился по повторяющимся значениям)