Найти количество совершенных и простых чисел в последовательности - C (СИ)
Формулировка задачи:
Добрый вечер ,помогите пожалуйста программу написать,я не могу понять даже с чего начать, не могу реализовать : Вводится последовательность целых чисел, 0-конец последовательности.Найти количество совершенных и простых чисел в последовательности ( результатами функций будет: 1-число простое, 0- число непростое,1-число совершенное, 0-нет).
Решение задачи: «Найти количество совершенных и простых чисел в последовательности»
textual
Листинг программы
#include <stdio.h>
#include <stdbool.h>
bool isPrime (int number);
bool isPerfect (int number);
int main (void) {
int primes, perfects, others, number;
primes = perfects = others = 0;
printf("Input: ");
while(scanf("%i", &number) > 0 && number != 0) {
if (isPrime(number))
primes += 1;
else if (isPerfect(number))
perfects += 1;
else
others += 1;
}
printf("%-10s%6d\n%-10s%6d\n%-10s%6d\n", "Primes:", primes, "Perfects:", perfects, "Others:", others);
return 0;
}
bool isPrime (int number) {
if (number != 2 && (number % 2) == 0 || number <= 1)
return false;
else {
int i;
for (i = 3; i * i <= number; i += 2)
if (number % i == 0) return false;
}
return true;
}
bool isPerfect (int number) {
if ((number % 2) != 0)
return false;
int sum = 0;
int i;
for (i = 1; i <= number / 2; i++)
if (number % i == 0) sum += i;
return (sum == number) ? true : false;
}
Объяснение кода листинга программы
- Объявление функций
isPrimeиisPerfect, которые будут использоваться для проверки чисел на простоту и совершенство соответственно. - Объявление переменных
primes,perfects,others,numberи инициализация их значений равными 0. - Ввод чисел с помощью цикла
while, который будет выполняться до тех пор, пока пользователь не введет некорректное значение (например, отрицательное число или ноль), и сохранять введенные числа в переменнойnumber. - Проверка числа на простоту с помощью функции
isPrimeи, если число является простым, увеличение значения переменнойprimesна 1. - Проверка числа на совершенство с помощью функции
isPerfectи, если число является совершенным, увеличение значения переменнойperfectsна 1. - Если число не является ни простым, ни совершенным, увеличение значения переменной
othersна 1. - Вывод количества простых, совершенных и других чисел с помощью функции
printf. - Вызов функции
isPrimeдля проверки числа на простоту. - Вызов функции
isPerfectдля проверки числа на совершенство. - Вывод сообщения об ошибке, если число не является простым или совершенным.
- Возвращение значения 0 из функции
main, что означает успешный конец работы программы. - Вывод количества простых, совершенных и других чисел.
- Конец программы.