Для нахождения делителей в цифровых последовательностях можно использовать следующий алгоритм: dzen.ru
- Перебрать числа из диапазона и записать их в переменную x. dzen.ru
- Для каждого числа x найти делители и записать их в список dels. dzen.ru Так как не нужно находить тривиальные делители (единицу и само число), то искать их следует среди чисел d из диапазона [2, x-1]. dzen.ru
- Для каждого числа d проверить, является ли оно делителем числа x (если является, то остаток от деления x на d равен нулю). dzen.ru Если является — добавить делитель d в список dels. dzen.ru
- После того, как перебраны все числа d — возможные делители, проверить количество делителей в списке dels. dzen.ru Если их два — вывести эти делители на экран. dzen.ru
- Если перебраны не все числа x, вернуться к пункту 1. dzen.ru
Для ускорения вычислений можно использовать следующие приёмы: sky.pro
- Проверка на чётность. sky.pro Это сократит время вычислений, поскольку у нечётных чисел нет чётных делителей. sky.pro
- Применение генераторов. sky.pro Для больших чисел рекомендуется использовать генераторы, которые поставляют делители по мере готовности, что позволяет экономить память. sky.pro
- Факторизация на простые числа. sky.pro Для этого можно использовать функцию factorint из библиотеки SymPy, которая внедряет оптимальные алгоритмы и применяет наиболее подходящий метод для решения конкретной задачи. sky.pro
Также для нахождения делителей в натуральных рядах чисел можно использовать закон распределения делителей. habr.com Его применение позволяет получать для заданного натурального N его простые делители и их кратные в натуральном ряде чисел. habr.com