Вычислить сумму n первых совершенных чисел - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Дано натуральное число n. Вычислить сумму n первых совершенных чисел (натуральное число называется совершенным, если равно сумме всех своих делителей, исключая само себя).

Решение задачи: «Вычислить сумму n первых совершенных чисел»

textual
Листинг программы
begin
  var n := ReadLnInteger('n = ');
  var perfectNumbers := Range(2, MaxInt - 1)
    .Where(number -> Range(1, number - 1).Where(i -> (number mod i) = 0).Sum() = number);
  writeln(perfectNumbers.Take(n), perfectNumbers.Take(n).Sum():8);
end.

Объяснение кода листинга программы

Код решает задачу поиска суммы первых совершенных чисел.

  1. var n := ReadLnInteger('n = '); - считывает из консоли количество чисел, которые нужно найти.
  2. var perfectNumbers := Range(2, MaxInt - 1) - создает последовательность всех чисел от 2 до (MaxInt - 1), где MaxInt - максимально возможное значение целого числа в данной системе.
  3. .Where(number -> Range(1, number - 1).Where(i -> (number mod i) = 0).Sum() = number); - фильтрует последовательность, оставляя только те числа, которые являются совершенными. Для этого используется метод Where, который последовательно применяет заданную функцию (в данном случае, это функция, которая проверяет, делится ли число на любое из чисел от 1 до (number - 1)) и возвращает последовательность, содержащую только совершенные числа.
  4. writeln(perfectNumbers.Take(n), perfectNumbers.Take(n).Sum():8); - выводит на экран первые n совершенных чисел, а также их сумму. Примечание: В данном коде предполагается, что число n не превышает 20. Если это условие не выполняется, то код может работать некорректно.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы