Написать функцию, которая найдет следующее за заданным простое число - 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, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д