Дано натуральное число N. Задача состоит в том, чтобы проверить, является ли число простым или нет.

Примеры:

Ввод: 5

Вывод:5 – этопростое число.

Объяснение.5 — простое число, потому что оно делится только на 1 и на себя.

Ввод: 4

Вывод:4 не является простым числом.

Простое число — это целое положительное число, кроме 1, которое делится на 1 и само на себя. Например: 2, 3, 5, 7, 11, 13, 17 — первые несколько простых чисел.

Примечание. 0 и 1 не являются ни простыми, ни составными.

Подход. Эффективный подход к решению этой проблемы состоит в том, чтобы перебирать все числа, начиная с 2 и заканчивая sqrt(N), используя цикл for и на каждой итерации проверять, полностью ли он делит N.

Если N полностью делится на него, N не является простым числом. В этом случае флаг устанавливается в 1, а цикл завершается с помощью оператора break.

Если мы не нашли никакого числа между 2 и sqrt(N), которое точно делит N, то это означает, что N простое число, тогда флаг не меняется на 1.

Наконец, проверьте, равен ли флаг 0, тогда N простое число, а если флаг установлен в 1, то N не является простым числом.

Обратите внимание, что мы инициализировали флаг как 0 во время запуска нашей программы.

Примечание. Мы запустили цикл от 2 до sqrt(N) вместо N/2, потому что один из множителей N должен быть меньше или равен квадратному корню из N.

Код:

// Программа на C, чтобы проверить,

// число простое или нет

#include ‹math.h›

#include ‹stdio.h›

основной ()

{

int n, i, флаг = 0;

printf("Введите число: ");

scanf("%d", &n);

// Итерация от 2 до sqrt(n)

для (я = 2; я ‹= sqrt (n); я ++) {

// Если n делится на любое число между

// 2 и квадратный корень из n, то это не так

// основной

if (n % i == 0) {

флаг = 1;

перерыв;

}

}

// Пограничные случаи

if (n == 0 || n == 1) {

printf("%d не является ни простым, ни составным", n);

}

еще {

// если флаг равен 0, то число простое

если (флаг == 0)

printf("%d — простое число", n);

// если флаг равен 1, то он не простой

еще

printf("%d не является простым числом", n);

}

вернуть 0;

}

Вывод:

Введите число: 5

5 это простое число

Временная сложность: O(N1/2)

Пространственная сложность: O(1)