Введение
В этом лабораторном практикуме вы научитесь писать программу на языке C для проверки, является ли заданное число совершенным. Программа будет считывать целое число от пользователя, вычислять сумму его собственных делителей и определять, является ли число совершенным. Лабораторный практикум охватывает фундаментальные понятия теории чисел и дискретной математики, предоставляя практическое применение этих принципов в программировании на языке C.
Программа сначала запрашивает у пользователя ввод положительного целого числа, затем вычисляет сумму собственных делителей числа (т.е. всех положительных целых чисел, меньших числа, которые делят число без остатка). Наконец, программа сравнивает сумму собственных делителей с исходным числом и выводит результат, указывая, является ли число совершенным или нет.
Чтение целого числа
В этом шаге вы узнаете, как читать целое число ввода в C для проверки совершенных чисел. Мы создадим программу на C, которая позволит пользователям ввести число для анализа.
Сначала создадим новый файл C в каталоге проекта:
cd ~/project
nano perfect_number.c
Теперь добавьте следующий код в файл:
#include <stdio.h>
int main() {
int number;
// Запрос ввода от пользователя
printf("Введите положительное целое число для проверки на совершенное число: ");
scanf("%d", &number);
// Вывод введенного числа для проверки ввода
printf("Вы ввели: %d\n", number);
return 0;
}
Пример вывода:
Введите положительное целое число для проверки на совершенное число: 28
Вы ввели: 28
Давайте разберем код:
#include <stdio.h>подключает стандартную библиотеку ввода/выводаscanf("%d", &number)считывает целое число ввода от пользователяprintf()используется для запроса ввода и отображения введенного числа
Компилируем и запускаем программу:
gcc perfect_number.c -o perfect_number
./perfect_number
Сумма собственных делителей и сравнение с числом
В этом шаге вы измените предыдущую программу на C, чтобы вычислить сумму собственных делителей и определить, является ли число совершенным.
Откройте существующий файл и обновите код:
nano ~/project/perfect_number.c
Замените предыдущий код на:
#include <stdio.h>
int main() {
int number, sum = 0;
// Запрос ввода от пользователя
printf("Введите положительное целое число для проверки на совершенное число: ");
scanf("%d", &number);
// Вычисление суммы собственных делителей
for (int i = 1; i < number; i++) {
if (number % i == 0) {
sum += i;
}
}
// Проверка, является ли число совершенным
if (sum == number) {
printf("%d - совершенное число!\n", number);
} else {
printf("%d - не совершенное число.\n", number);
}
return 0;
}
Компилируем и запускаем программу:
gcc perfect_number.c -o perfect_number
./perfect_number
Пример вывода для совершенного числа:
Введите положительное целое число для проверки на совершенное число: 28
28 - совершенное число!
Пример вывода для несовершенного числа:
Введите положительное целое число для проверки на совершенное число: 12
12 - не совершенное число.
Основные объясненные понятия:
- Цикл
forперебирает числа от 1 доnumber - 1 number % i == 0проверяет, является лиiделителем числаsum += iскладывает все собственные делители- Совершенное число — это положительное целое число, равное сумме его собственных делителей
Вывод результата
На этом заключительном шаге вы улучшите программу, чтобы получить более подробный вывод о совершенном числе, включая его делители и сумму.
Откройте файл и обновите код:
nano ~/project/perfect_number.c
Замените предыдущий код на:
#include <stdio.h>
int main() {
int number, sum = 0;
// Запрос ввода от пользователя
printf("Введите положительное целое число для проверки на совершенное число: ");
scanf("%d", &number);
// Вывод заголовка для делителей
printf("Собственные делители %d: ", number);
// Вычисление суммы собственных делителей и вывод их
for (int i = 1; i < number; i++) {
if (number % i == 0) {
printf("%d ", i);
sum += i;
}
}
// Вывод подробного результата
printf("\n\nСумма собственных делителей: %d", sum);
// Проверка и вывод статуса совершенного числа
if (sum == number) {
printf("\n%d - СООБЕРШЕННОЕ ЧИСЛО!\n", number);
} else {
printf("\n%d - НЕ совершенное число.\n", number);
}
return 0;
}
Компилируем и запускаем программу:
gcc perfect_number.c -o perfect_number
./perfect_number
Пример вывода для совершенного числа (28):
Введите положительное целое число для проверки на совершенное число: 28
Собственные делители 28: 1 2 4 7 14
Сумма собственных делителей: 28
28 - СООБЕРШЕННОЕ ЧИСЛО!
Пример вывода для несовершенного числа (12):
Введите положительное целое число для проверки на совершенное число: 12
Собственные делители 12: 1 2 3 4 6
Сумма собственных делителей: 16
12 - НЕ совершенное число.
Основные улучшения:
- Теперь выводятся все собственные делители.
- Показывается сумма собственных делителей.
- Предоставляется понятный и отформатированный вывод.
- Сохраняется основная логика определения совершенного числа.
Резюме
В этом лабораторном практикуме вы научитесь вводить целое число в C и определять, является ли число совершенным. Сначала вы создадите программу на C, которая попросит пользователя ввести положительное целое число. Затем вы вычислите сумму собственных делителей числа и сравните её с исходным числом, чтобы проверить, является ли оно совершенным числом. Наконец, вы выведете результат на консоль.
Ключевые моменты, которые вы изучите в этом практикуме: ввод целых чисел с помощью scanf(), вычисление суммы собственных делителей с помощью цикла for и сравнение суммы с исходным числом для определения того, является ли оно совершенным числом.



