Дано натуральное число N. Определить является ли оно совершенным - C (СИ)
Формулировка задачи:
Дано натуральное число N. Определить является ли оно совершенным( совершенное число N равно сумме всех своих делителей включая 1 не считая само N например 6=1+2+3)
Решение задачи: «Дано натуральное число N. Определить является ли оно совершенным»
textual
Листинг программы
int perfnum(int n) { int sum = 0, val = n; while (--val > 0) { if ((n % val) == 0) { sum += val; } } return (sum == n); }
Объяснение кода листинга программы
В данном коде функция perfnum(int n) принимает натуральное число N и проверяет, является ли оно совершенным. Совершенное число — это натуральное число, равное сумме всех своих делителей, кроме самого числа, взятого в отрицательное число. Внутри функции происходит следующее:
- Инициализируется переменная sum со значением 0 и переменная val со значением n.
- В цикле while перебираются все делители числа n, начиная с самого большого (val устанавливается в n-1 и уменьшается на 1 на каждой итерации).
- Для каждого делителя проверяется, равен ли остаток от деления n на этот делитель нулю. Если да, то к сумме sum прибавляется значение делителя.
- По завершении цикла возвращается значение переменной sum, которое сравнивается с n. Если они равны, то число n является совершенным.
Пример вызова функции:
int main() {
int n;
printf(
Введите натуральное число:
); scanf(%d
, &n); if (perfnum(n)) { printf(%d - совершенное число\n
, n); } else { printf(%d - несовершенное число\n
, n); } return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д