TheAlgorithms-C/misc/prime.c
shellhub c259ac4c32 * fix doc
* add test
2020-08-14 08:11:57 +08:00

72 lines
1.4 KiB
C

/**
* @file
* @brief Program to identify if a number is [prime
* number](https://en.wikipedia.org/wiki/Prime_number) or not
*/
#include <assert.h>
#include <math.h>
#include <stdbool.h>
#include <stdio.h>
/**
* Check if a given number is prime number or not
* @param x number to check
* @return `true` if given number is prime number, otherwise `false`
*/
bool isPrime(int x)
{
if (x == 2)
{
return true;
}
if (x < 2 || x % 2 == 0)
{
return false;
}
double squareRoot = sqrt(x);
for (int i = 3; i <= squareRoot; i += 2)
{
if (x % i == 0)
{
return false;
}
}
return true;
}
/**
* Test function
* @return void
*/
void test()
{
/* all the prime numbers less than 100 */
int primers[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41,
43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97};
for (size_t i = 0, size = sizeof(primers) / sizeof(primers[0]); i < size;
++i)
{
assert(isPrime(primers[i]));
}
/* Example Non-prime numbers */
int NonPrimers[] = {-1, 0, 1, 4, 6, 8, 9, 10};
for (size_t i = 0, size = sizeof(NonPrimers) / sizeof(NonPrimers[0]);
i < size; ++i)
{
assert(!isPrime(NonPrimers[i]));
}
}
/**
* Driver Code
* @return None
*/
int main()
{
test();
return 0;
}