Задача 25

Пример решения задачи №25 из нового ЕГЭ по информатике

Это довольно простая задача, которая проверяет основные навыки программирование, а именно умение находить делители числа, организовывать циклы, составлять подпрограммы.

Пример задачи

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [120115; 120200],
число, имеющее максимальное количество различных натуральных делителей, если таких чисел несколько — найдите максимальное из них. Выведите на экран количество делителей такого числа и само число.
Например, в диапазоне [80; 90] максимальное количество различных натуральных делителей имеет число 90,
поэтому для этого диапазона вывод на экране должна содержать следующие значения:
12 90

Ниже я выкладываю хорошо закомментированный код на Python, в котором не составит труда разобраться. Для лучшего понимания, скопируйте код программы в какой-нибудь редактор (Nodepad++, Блокнот) или в систему программирования (PyCharm, Visual Studio).

#Подсчитываем количество делителей числа
def Del(n):
    #число 1 рассматриваем отдельно, так как у него всего один делитель
    if n==1:
        return 1
    #у остальных чисел делителей как минимум 2 (1 и оно само)
    k=2
    #подсчитываем делители числа начиная перебирать числа 2 до n//2
    #например для числа 10 мы будем перебирать числа от 2 до 5
    for i in range(2,n//2+1):# +1 потому что в Python range перебирает числа до n-1
        if (n%i==0):#если число n делится на i без остатка,
            k+=1#то увеличиваем количество делителей на 1
    return k#возвращаем количество делителей числа

#решаем задачу
maxDel=Del(120115)#максимальное количество делитей
max=120115#число
for i in range(120116,120201):#перебираем числа из заданного диапазона не забывая прибавить 1 к последнему числу
    k=Del(i)#считаем количество делителей очередного числа
    if k>=maxDel:#если количество делителей очередного числа больше чем найденное ранее количество делителей
        maxDel=k#запоминаем количество делителей
        max=i#запоминаем число
print(maxDel,max)#выводим результат на экран

Для закрепления, решите следующие задачи используя условие и решение задачи данной выше:

  1. Найдите число, имеющее минимальное количество различных натуральных делителей
  2. Найдите число, имеющее максимальную сумму различных натуральных делителей
  3. Найдите максимальное простое число
  4. Найдите минимальное простое число