Функция нахождения совершенного числа - C (СИ)
Формулировка задачи:
Народ, помогите написать программу с функцией нахождения совершенного числа в диапазоне от 1 до 1000.
Решение задачи: «Функция нахождения совершенного числа»
textual
Листинг программы
#include <math.h>
int isperfect(int n)
{
int sum = 1;
for (int i = 2; i < sqrt(n); i++)
if (!(n % i))
sum += i + n / i;
return !(sum - n);
}
int main()
{
for (int i = 2; i <= 1000; i++)
if (isperfect(i))
printf("%d\n", i);
}
Объяснение кода листинга программы
- Подключение стандартной библиотеки math.h необходимо для использования функции sqrt(n), которая вычисляет квадратный корень из числа n.
- В функции isperfect(int n) входным параметром является число n.
- Переменная sum инициализируется значением 1.
- В цикле for перебираются все числа от 2 до квадратного корня из n.
- Выражение !(n % i) проверяет, делится ли n на i без остатка.
- Если условие выполняется, то к сумме sum прибавляются значения i и n/i.
- Возвращаемое значение функции isperfect(int n) — это разность между суммой sum и n.
- В функции main() с помощью цикла for перебираются все числа от 2 до 1000.
- Если функция isperfect(int n) возвращает значение 1, то число n выводится на экран с помощью функции printf().
- Таким образом, данный код находит все совершенные числа до 1000 и выводит их на экран.