Пишем программу на С++, которая проверяет, является ли простым введенное число. Проверка осуществляется в отдельной функции.
Простое число – это число, которое делится только на себя и на 1.
Самый простой алгоритм – последовательно делить исходное число на 2, 3, 5 и следующие нечетные числа, пока произведение 2 и делителя не превышает делимое. Если хотя бы один остаток от деления равен нулю, то число составное.
Недостаток алгоритма. Вообще-то нужно делить не на все нечетные числа, а только на простые числа. Нет смысла делить на 15, если число не делилось на 3. Но тогда придется проверять на делимость сами делители=) Поэтому будем реализовывать легкореализуемый способ.
Саму проверку на «простоту» поручим функции prime. Она будет возвращать 0, если число составное, и 1, если оно простое.
Для хранения названий числа («составное», «простое») создадим символьный массив а.
Простое число – это число, которое делится только на себя и на 1.
Самый простой алгоритм – последовательно делить исходное число на 2, 3, 5 и следующие нечетные числа, пока произведение 2 и делителя не превышает делимое. Если хотя бы один остаток от деления равен нулю, то число составное.
Недостаток алгоритма. Вообще-то нужно делить не на все нечетные числа, а только на простые числа. Нет смысла делить на 15, если число не делилось на 3. Но тогда придется проверять на делимость сами делители=) Поэтому будем реализовывать легкореализуемый способ.
Саму проверку на «простоту» поручим функции prime. Она будет возвращать 0, если число составное, и 1, если оно простое.
Для хранения названий числа («составное», «простое») создадим символьный массив а.
#include <iostream.h>
#include<math.h>
int prime(long N); //функция проверки
void main()
{
long M;
char *a[]={"составное","простое"};
cout<<"Введите целое положительное число: ";
cin>>M;
M=abs(M);//на всякий случай возьмем модуль числа
cout<<"Это число - "<<a[prime(M)];
cin.get();
cin.get();
}
int prime(long N)
{ //функция возвращает 1, если число - простое
long j;
if(N<4) return 1; //числа 2 и 3 - простые
if(N%2==0) return 0; //четные числа - составные
//проверим делимость на нечетные числа
for(j=3; j*j<=N; j+=2)
if(N%j==0) return 0;
return 1;
}
