Страницы

пятница, 25 апреля 2014 г.

Определение простых чисел

Пишем программу на С++, которая проверяет, является ли простым введенное число. Проверка осуществляется в отдельной функции.
Простое число – это число, которое делится только на себя и на 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;
}