Метод 1: наивный подход
- Перебор чисел от 2 до n.
- Для каждого числа проверьте, является ли оно простым.
- Если это простое число, сохраните его как наименьший простой множитель для этого числа.
- Если оно не простое, найдите наименьший простой делитель с помощью пробного деления.
- Сохраните наименьший простой множитель как наименьший простой множитель для этого числа.
Метод 2: Решето Эратосфена
- Создайте логический массив размера n+1 и инициализируйте все значения как True.
- Итерация от 2 до квадратного корня из n:
a. Если текущее число является простым (отмечено как True), обновите его кратные значения как False. - Перебрать числа от 2 до n:
a. Если текущее число простое, сохраните его как наименьший простой делитель для этого числа.
Метод 3: Оптимизированное сито Эратосфена
- Создайте массив размером n+1 и инициализируйте все значения как 0.
- Итерация от 2 до n:
a. Если наименьший простой множитель текущего числа еще не присвоен (0), отметьте его как простое и назначьте текущее число как наименьший простой множитель.
b. Для каждого кратного текущего числа отметьте его наименьший простой множитель как текущее число.
c. Если числу присвоен наименьший простой множитель, пропустите его. - Перебрать числа от 2 до n:
a. Если текущее число простое, сохраните его как наименьший простой делитель для этого числа.