Написать функцию, которая найдет следующее за заданным простое число - C (СИ)
Формулировка задачи:
пожаааалуйста хелп
сказали, что 2 функции здесь будет, 1- будет проверять простое ли число, а 2 - будет находить следующее число за ним..
Решение задачи: «Написать функцию, которая найдет следующее за заданным простое число»
textual
Листинг программы
#include <stdbool.h>
#include <stdio.h>
#define until(c) while(!(c))
bool prime(unsigned long x) {
if ((x & 1) == 0) { return x == 2; }
for (unsigned long i = 3; i * i <= x; i += 2) {
if (x % i == 0) { return false; }
}
return true;
}
int main(void) {
unsigned long n;
while (scanf("%lu", &n) == 1 && n != 0) {
do {
n++;
} until (prime(n));
printf("%lu\n", n);
}
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек:
и - Объявление макроса
until, который будет использоваться в коде для проверки условия и выполнения цикла до его истинности. - Определение функции
prime, которая проверяет, является ли число простым. Если число делится на 2, функция возвращает true только для числа 2. Затем происходит проверка делителей от 3 до корня из заданного числа (исключая число 2). Если делитель найден, функция возвращает false. Если делителей не найдено, функция возвращает true. - В функции
mainобъявляется переменнаяnдля хранения введенного числа. - В цикле
whileпроисходит считывание числа с помощью функцииscanfи проверка на ненулевой ввод. - Внутри цикла происходит увеличение числа
nна единицу и проверка с помощью функцииprime. Цикл выполняется до тех пор, пока функцияprimeне вернет true. - После выполнения цикла происходит вывод числа
nс помощью функцииprintf. - В конце функции
mainвозвращается 0, что означает успешное выполнение программы.