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