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