Посчитать количество совершенных и простых чисел в последовательности (с использованием функций) - C (СИ)
Формулировка задачи:
Помогите с программой , пожалуйста )
Условие :
Вводиться последовательность из N целых положительных элементов. Посчитать количество совершенных и простых чисел в последовательности. Буду очень благодарен )
Решение задачи: «Посчитать количество совершенных и простых чисел в последовательности (с использованием функций)»
textual
Листинг программы
#pragma hdrstop
#pragma argsused
#include <stdio.h>
#include <tchar.h>
int isProstoe(int number)
{
int i;
if (number == 2 || number==3)
{
return 1;
}
if (number == 1) {
return 0;
}
for (i = 2; i <= number/2; i++)
{
if (number % i == 0)
return 0;
}
return 1;
}
int isSovershennoe(int number)
{
int i;
int sum = 0;
sum++;
for (i = 2; i <= number/2; i++)
{
if (number % i == 0)
sum+=i;
}
if (sum == number && number != 1) {
return 1;
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
int N;
char timeout;
int i;
int numbers[1024];
int countProstoe = 0;
int countSovershennoe = 0;
printf("Please Enter N: ");
scanf("%d", &N);
printf("Please Enter %d numbers...\n\r", N);
for (i = 0; i < N; i++) {
scanf("%d", &numbers[i]);
if (isProstoe(numbers[i])) {
countProstoe++;
}
if (isSovershennoe(numbers[i])) {
countSovershennoe++;
}
}
printf("Sovershennych chisel: %d\n\r", countSovershennoe);
printf("Prostych chisel: %d\n\r", countProstoe);
//Задержка экрана
printf("Please Press Enter symbol 'e'...");
while (1)
{
scanf("%c", &timeout);
if (timeout == 'e') break;
}
return 0;
}
Объяснение кода листинга программы
- Функция
isProstoeпроверяет, является ли число простым. Если число равно 2 или 3, функция возвращает 1. Если число равно 1, функция возвращает 0. В противном случае, функция проверяет, делится ли число на какое-либо число от 2 до корня из этого числа (включительно). Если делится, функция возвращает 0. Если не делится ни на одно число, функция возвращает 1. - Функция
isSovershennoeпроверяет, является ли число совершенным. Функция начинает с инициализации переменнойsumравной 1 (т.к. любое число больше 1 является совершенным). Затем функция проверяет, делится ли число на какое-либо число от 2 до корня из этого числа (включительно). Если делится, функция добавляет это число кsum. Еслиsumравно числу и число не равно 1, функция возвращает 1. Еслиsumне равно числу, функция возвращает 0. - В функции
_tmainсначала объявляются переменные и массив чисел. Затем пользователю предлагается ввести числоN, которое будет использоваться для определения количества чисел для проверки. После ввода числа, пользователю предлагается ввестиNчисел. Затем происходит проверка каждого числа на простоту и совершенство с помощью функцийisProstoeиisSovershennoe. Количество простых и совершенных чисел сохраняется в переменныхcountProstoeиcountSovershennoeсоответственно. Затем выводится количество совершенных чисел и количество простых чисел. После этого пользователю предлагается нажать символ 'e' для выхода из программы. Если символ 'e' не нажимается, программа продолжает выводить запрос.