Given a positive integer N. The task is to write a C program to check if the number is **prime or not**.

**Definition**:

A

prime numberis a natural number greater than 1 that has no positive divisors other than 1 and itself. The first few prime numbers are {2, 3, 5, 7, 11, ….}

The idea to solve this problem is to iterate through all the numbers starting from 2 to sqrt(N) using a for loop and for every number check if it divides N. If we find any number that divides, we return false. If we did not find any number between 2 and sqrt(N) which divides N then it means that N is prime and we will return True. **Why did we choose sqrt(N)?**

The reason is that the smallest and greater than one factor of a number cannot be more than the sqrt of N. And we stop as soon as we find a factor. For example, if N is 49, the smallest factor is 7. For 15, smallest factor is 3.

Below is the C program to check if a number is prime:

## C

`// C program to check if a` `// number is prime` `#include <math.h>` `#include <stdio.h>` `int` `main()` `{` ` ` `int` `n, i, flag = 1;` ` ` `// Ask user for input` ` ` `printf` `(` `"Enter a number: \n"` `);` ` ` `// Store input number in a variable` ` ` `scanf` `(` `"%d"` `, &n);` ` ` `// Iterate from 2 to sqrt(n)` ` ` `for` `(i = 2; i <= ` `sqrt` `(n); i++) {` ` ` `// If n is divisible by any number between` ` ` `// 2 and n/2, it is not prime` ` ` `if` `(n % i == 0) {` ` ` `flag = 0;` ` ` `break` `;` ` ` `}` ` ` `}` ` ` `if` `(n <= 1)` ` ` `flag = 0;` ` ` `if` `(flag == 1) {` ` ` `printf` `(` `"%d is a prime number"` `, n);` ` ` `}` ` ` `else` `{` ` ` `printf` `(` `"%d is not a prime number"` `, n);` ` ` `}` ` ` `return` `0;` `}` |

**Output**:

Enter a number: 11 11 is a prime number

**Time Complexity: **O(n^{1/2})

**Auxiliary Space: **O(1)

Want to learn from the best curated videos and practice problems, check out the **C Foundation Course **for Basic to Advanced C.