Задание 25 · ЕГЭ, информатика 2027
Программа: целочисленная информация
Делители ищем до квадратного корня, а не до самого числа.
Пять вариантов задания
Данные в вариантах разные, приём решения один. Отмеченные галочкой уже решены — отметка хранится в этом браузере.
Как искать делители быстро
Перебирать все числа от 2 до x не нужно: делители идут парами d и x // d, поэтому достаточно дойти до квадратного корня. Для шестизначных чисел это около 700 шагов вместо полумиллиона.Не забыть про парный делитель
Найдя d, сразу добавляем и x // d. Отдельно проверяем случай d = x // d (полный квадрат), чтобы не посчитать один делитель дважды.Отобрать нужные
Единица и само число в условии не учитываются — их мы и не добавляем, потому что перебор начинается с 2 и идёт до корня.Что получилось
число наибольший делитель 120005 24001 120007 2927 120013 2791 120019 467 120023 6317 120027 40009 120031 4139 120035 24007 120039 40013 Ответ
Сумма найденных чисел: 1 080 199.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
res = []
for x in range(120000, 120040 + 1):
divs = []
d = 2
while d * d <= x: # делители ищем до корня
if x % d == 0:
divs.append(d)
if d != x // d: # у полного квадрата пара совпадает
divs.append(x // d)
d += 1
divs = [t for t in divs if t % 2 == 1]
if len(divs) == 2:
res.append((x, max(divs)))
# Таблица — то, что требуется на экзамене
for x, d in res:
print(x, d)
# Последняя строка — сумма найденных чисел: её вводят в поле ответа
print(sum(x for x, _ in res))
Где обычно теряют балл
- Перебирать делители до самого x — программа отработает, но на экзамене на это уйдёт слишком много времени.
- Посчитать делитель дважды у полного квадрата.
- Включить в список 1 и само число, хотя условие их исключает.
Как искать делители быстро
Перебирать все числа от 2 до x не нужно: делители идут парами d и x // d, поэтому достаточно дойти до квадратного корня. Для шестизначных чисел это около 700 шагов вместо полумиллиона.Не забыть про парный делитель
Найдя d, сразу добавляем и x // d. Отдельно проверяем случай d = x // d (полный квадрат), чтобы не посчитать один делитель дважды.Отобрать нужные
Единица и само число в условии не учитываются — их мы и не добавляем, потому что перебор начинается с 2 и идёт до корня.Что получилось
число наибольший делитель 235001 18077 235006 117503 235019 1181 235021 1193 235022 117511 235023 78341 235031 2423 235033 3853 235034 117517 235039 33577 Ответ
Сумма найденных чисел: 2 350 229.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
res = []
for x in range(235000, 235040 + 1):
divs = []
d = 2
while d * d <= x: # делители ищем до корня
if x % d == 0:
divs.append(d)
if d != x // d: # у полного квадрата пара совпадает
divs.append(x // d)
d += 1
if len(divs) == 2:
res.append((x, max(divs)))
# Таблица — то, что требуется на экзамене
for x, d in res:
print(x, d)
# Последняя строка — сумма найденных чисел: её вводят в поле ответа
print(sum(x for x, _ in res))
Где обычно теряют балл
- Перебирать делители до самого x — программа отработает, но на экзамене на это уйдёт слишком много времени.
- Посчитать делитель дважды у полного квадрата.
- Включить в список 1 и само число, хотя условие их исключает.
Как искать делители быстро
Перебирать все числа от 2 до x не нужно: делители идут парами d и x // d, поэтому достаточно дойти до квадратного корня. Для шестизначных чисел это около 700 шагов вместо полумиллиона.Не забыть про парный делитель
Найдя d, сразу добавляем и x // d. Отдельно проверяем случай d = x // d (полный квадрат), чтобы не посчитать один делитель дважды.Отобрать нужные
Единица и само число в условии не учитываются — их мы и не добавляем, потому что перебор начинается с 2 и идёт до корня.Что получилось
число наибольший делитель 310006 155003 310018 155009 310034 155017 310036 77509 Ответ
Сумма найденных чисел: 1 240 094.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
res = []
for x in range(310000, 310040 + 1):
divs = []
d = 2
while d * d <= x: # делители ищем до корня
if x % d == 0:
divs.append(d)
if d != x // d: # у полного квадрата пара совпадает
divs.append(x // d)
d += 1
divs = [t for t in divs if t % 2 == 1]
if len(divs) == 1:
res.append((x, max(divs)))
# Таблица — то, что требуется на экзамене
for x, d in res:
print(x, d)
# Последняя строка — сумма найденных чисел: её вводят в поле ответа
print(sum(x for x, _ in res))
Где обычно теряют балл
- Перебирать делители до самого x — программа отработает, но на экзамене на это уйдёт слишком много времени.
- Посчитать делитель дважды у полного квадрата.
- Включить в список 1 и само число, хотя условие их исключает.
Как искать делители быстро
Перебирать все числа от 2 до x не нужно: делители идут парами d и x // d, поэтому достаточно дойти до квадратного корня. Для шестизначных чисел это около 700 шагов вместо полумиллиона.Не забыть про парный делитель
Найдя d, сразу добавляем и x // d. Отдельно проверяем случай d = x // d (полный квадрат), чтобы не посчитать один делитель дважды.Отобрать нужные
Единица и само число в условии не учитываются — их мы и не добавляем, потому что перебор начинается с 2 и идёт до корня.Что получилось
число наибольший делитель 418001 2503 418003 9721 418017 139339 418021 3191 418029 139343 418037 1103 418039 4139 Ответ
Сумма найденных чисел: 2 926 147.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
res = []
for x in range(418000, 418040 + 1):
divs = []
d = 2
while d * d <= x: # делители ищем до корня
if x % d == 0:
divs.append(d)
if d != x // d: # у полного квадрата пара совпадает
divs.append(x // d)
d += 1
divs = [t for t in divs if t % 2 == 1]
if len(divs) == 2:
res.append((x, max(divs)))
# Таблица — то, что требуется на экзамене
for x, d in res:
print(x, d)
# Последняя строка — сумма найденных чисел: её вводят в поле ответа
print(sum(x for x, _ in res))
Где обычно теряют балл
- Перебирать делители до самого x — программа отработает, но на экзамене на это уйдёт слишком много времени.
- Посчитать делитель дважды у полного квадрата.
- Включить в список 1 и само число, хотя условие их исключает.
Как искать делители быстро
Перебирать все числа от 2 до x не нужно: делители идут парами d и x // d, поэтому достаточно дойти до квадратного корня. Для шестизначных чисел это около 700 шагов вместо полумиллиона.Не забыть про парный делитель
Найдя d, сразу добавляем и x // d. Отдельно проверяем случай d = x // d (полный квадрат), чтобы не посчитать один делитель дважды.Отобрать нужные
Единица и само число в условии не учитываются — их мы и не добавляем, потому что перебор начинается с 2 и идёт до корня.Что получилось
число наибольший делитель 540002 270001 540003 180001 540007 41539 540011 13171 540013 1759 540019 3313 540021 180007 540031 827 540035 108007 Ответ
Сумма найденных чисел: 4 860 142.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
res = []
for x in range(540000, 540040 + 1):
divs = []
d = 2
while d * d <= x: # делители ищем до корня
if x % d == 0:
divs.append(d)
if d != x // d: # у полного квадрата пара совпадает
divs.append(x // d)
d += 1
if len(divs) == 2:
res.append((x, max(divs)))
# Таблица — то, что требуется на экзамене
for x, d in res:
print(x, d)
# Последняя строка — сумма найденных чисел: её вводят в поле ответа
print(sum(x for x, _ in res))
Где обычно теряют балл
- Перебирать делители до самого x — программа отработает, но на экзамене на это уйдёт слишком много времени.
- Посчитать делитель дважды у полного квадрата.
- Включить в список 1 и само число, хотя условие их исключает.
Программа для обработки целочисленных данных
Почти всегда речь о делителях. Главное — не перебирать делители до самого числа: они идут парами d и n / d, поэтому достаточно дойти до квадратного корня. Для шестизначного числа это около 700 шагов вместо полумиллиона.
Шаблон перебора:
d = 2
while d * d <= n:
if n % d == 0:
запомнить d и n // d
d += 1
Отдельно проверяйте случай d = n // d (полный квадрат), чтобы не посчитать делитель дважды. Единица и само число в условиях этого номера обычно не учитываются — перебор с 2 до корня как раз их и исключает.
Где теряют балл. Перебор до n; двойной учёт делителя у полного квадрата; вывод в неверном порядке — сначала число, потом делитель.
Где эта тема разобрана подробно
Структура раздела и темы заданий соответствуют кодификатору и спецификации ФИПИ. Задания и файлы данных составлены редакцией reknow.ru. План варианта приведён по проекту спецификации и демоверсии ФИПИ 2027 года. После публикации утверждённой версии информация будет обновлена.