Программа перебирает большие целые числа и ищет те, у которых нужные делители или которые подходят под маску — шаблон, где «?» заменяет одну цифру, а «*» — любое количество цифр. Высокий уровень: в ответ идёт таблица из найденных чисел и второго числа к каждому, например наименьшего делителя; 1 балл.
Ответ
таблица из двух столбцов: найденные числа и второе число к каждому
Баллы
1 балл
Проверяет
умение написать короткую программу, 10–20 строк, для обработки целых чисел: делители, делимость, числа, подходящие под маску
Сколько времени закладывать
около 20 минут по спецификации ФИПИ
Какие бывают подтипы
Ровно три делителя — Числа с заданным количеством делителей: ровно три делителя бывает только у квадрата простого числа.
Ближайшее кратное — Найти первое число после заданного, которое делится на нужный делитель. На этом шаге держится быстрый перебор чисел по маске: проверяют только кратные.
Большой отрезок — Числа на отрезке в сотни тысяч и миллионы: делители перебирают только до квадратного корня из числа.
Пример с полным разбором
Условие. Найдите все числа от 100 до 200, у которых ровно три различных натуральных делителя. В ответе запишите найденные числа по возрастанию и рядом с каждым — наибольший его делитель, отличный от самого числа.
Делители числа идут парами: если d делит n, то и n:d делит n. Поэтому у большинства чисел делителей чётное количество.
Нечётное количество бывает, только когда пара «склеивается»: d=n:d, то есть n — квадрат. Ровно три делителя — это 1,p и p2, где p — простое число.
Квадраты простых чисел от 100 до 200: 112=121 и 132=169. Квадрат 122=144 не подходит: 12 не простое, и у 144 делителей 15.
Наибольший делитель числа p2, кроме него самого, — это p: у 121 это 11, у 169 — 13.
Программа проверяет каждое число и перебирает делители только до квадратного корня: for n in range(100, 201):d = set()for k in range(1, int(n ** 0.5) + 1):if n % k == 0:d.add(k)d.add(n // k)if len(d) == 3:print(n, max(d - {n}))
Ответ: две строки таблицы: 121 и 11; 169 и 13
Частые ошибки
Считают корень квадрата дважды: у 144 делитель 12 — пара самому себе.
Забывают, что «*» в маске может означать и пустую цепочку цифр: маске 12*3 подходит число 123.
Придумывают границу перебора «с запасом», хотя её задаёт условие, и в ответ попадают лишние числа.
Путают порядок чисел в строке таблицы или нарушают порядок возрастания.
Перебирают делители до самого числа, и программа не успевает отработать за время экзамена.
Что нужно знать для задания 25
Оглавление курса «ЕГЭ по информатике» под это задание. Содержание открывается после оплаты.
Что просят в задании 25
Делители за корень
Ровно три делителя и другие условия на количество
Маска и шаг по кратности
Первые найденные числа и произведение двух простых
В таблицу из двух столбцов: в каждой строке — найденное число и второе число к нему, строки — в порядке возрастания. Строк в таблице ответа больше, чем нужно, лишние остаются пустыми.
Сколько баллов за задание 25?
Один: таблица должна полностью совпасть с верной.
Почему в демоверсии два задания 25?
Это два примера того, что может стоять на этой позиции: про делители и про числа по маске. В настоящем варианте задание 25 одно.