Python: поиск наименьшего простого множителя чисел до n

Метод 1: наивный подход

  1. Перебор чисел от 2 до n.
  2. Для каждого числа проверьте, является ли оно простым.
  3. Если это простое число, сохраните его как наименьший простой множитель для этого числа.
  4. Если оно не простое, найдите наименьший простой делитель с помощью пробного деления.
  5. Сохраните наименьший простой множитель как наименьший простой множитель для этого числа.

Метод 2: Решето Эратосфена

  1. Создайте логический массив размера n+1 и инициализируйте все значения как True.
  2. Итерация от 2 до квадратного корня из n:
    a. Если текущее число является простым (отмечено как True), обновите его кратные значения как False.
  3. Перебрать числа от 2 до n:
    a. Если текущее число простое, сохраните его как наименьший простой делитель для этого числа.

Метод 3: Оптимизированное сито Эратосфена

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