Программа распознавания простого числа - 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не было найдено ни одного делителя, и следовательно, является простым.