Вопрос задан 02.11.2026 в 21:25. Предмет Информатика. Спрашивает Романова Софья.

Условие: Найдите все целые числа из промежутка от a до b, у которых сумма делителей равна k. Формат входных данных: На вход подаются три натуральных числа — a, b и k, каждое на новой строке. Все числа не превосходят 1000 и выполняется условие a ≤ b. Формат выходных данных: В единственной строке через пробел выведите все подходящие числа в порядке возрастания.

Перейти к ответам

Ответы на вопрос

Отвечает Гафуров Игорь.

Решение задачи на Python

Для решения задачи необходимо перебрать все числа от a до b и для каждого вычислить сумму его делителей.

Алгоритм решения:

  1. Считываем три натуральных числа a, b и k.

  2. Перебираем все числа n от a до b включительно.

  3. Для каждого числа находим сумму его делителей:

    • перебираем числа от 1 до n;

    • если n делится на текущее число без остатка, добавляем его к сумме.

  4. Если сумма делителей равна k, выводим найденное число.

  5. Все числа выводятся в порядке возрастания.

Код на Python

Python
a = int(input())
b = int(input())
k = int(input())

for n in range(a, b + 1):
s = 0

for d in range(1, n + 1):
if n % d == 0:
s += d

if s == k:
print(n, end=' ')

Пример работы

Пусть входные данные:

Обычный текст
1 10 8

Числа от 1 до 10, сумма делителей которых равна 8:

- 7: делители 1 и 7, сумма равна 8.

Выходные данные:

Обычный текст
7

Сложность алгоритма: O((b−a+1)⋅b)O((b-a+1)\cdot b). При ограничении a,b≤1000a,b\leq 1000 такой алгоритм работает достаточно быстро.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос