Программа распознавания простого числа - C (СИ)
Формулировка задачи:
Коллеги,сочинил алгоритм на предмет является ли введенное число простым.Нормально или не очень?
#include <stdio.h> #include <math.h> int main() { int b; printf ("Vvod chisel: "); scanf("%d",&b); if (b%2==0||b%3==0||b%5==0||b%7==0||b%9==0) { printf("\nNo"); } else printf("\nYes"); return 0; }
Решение задачи: «Программа распознавания простого числа»
textual
Листинг программы
int is_prime(unsigned n) { unsigned x = 2; if ( n < x ) return 0; else { while ( x * x <= n ) { if ( n % x == 0 ) return 0; ++x; } } return 1; }
Объяснение кода листинга программы
- Функция
is_prime
принимает целочисленный аргументn
типаunsigned
и возвращает булево значение -1
если числоn
является простым, и0
в противном случае. - Переменная
x
инициализируется значением2
. - В условии
if ( n < x )
проверяется, является ли числоn
меньше переменнойx
. Если это так, то функция возвращает0
, так как числоn
не может быть простым. - В блоке
else
выполняется циклwhile
, который выполняется до тех пор, покаx * x
меньше или равноn
. - В условии цикла
if ( n % x == 0 )
проверяется, делится ли числоn
на переменнуюx
без остатка. Если это так, то функция возвращает0
, так как числоn
не является простым. - Переменная
x
инкрементируется на единицу с помощью оператора++x
. - После выхода из цикла
while
функция возвращает1
, так как числоn
не было найдено ни одного делителя, и следовательно, является простым.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д