Функция нахождения совершенного числа - 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 и выводит их на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д