# Primality Test | Set 1 (Introduction and School Method)

Given a positive integer, check if the number is prime or not. A prime is a natural number greater than 1 that has no positive divisors other than 1 and itself. Examples of first few prime numbers are {2, 3, 5,

Examples :

```Input:  n = 11
Output: true

Input:  n = 15
Output: false

Input:  n = 1
Output: false
```

## Recommended: Please solve it on “PRACTICE” first, before moving on to the solution.

School Method
A simple solution is to iterate through all numbers from 2 to n-1 and for every number check if it divides n. If we find any number that divides, we return false.

Below is the implementation of this method.

## C++

 `// A school method based C++ program to check if a  ` `// number is prime ` `#include ` `using` `namespace` `std; ` ` `  `bool` `isPrime(``int` `n) ` `{ ` `    ``// Corner case ` `    ``if` `(n <= 1)  ``return` `false``; ` ` `  `    ``// Check from 2 to n-1 ` `    ``for` `(``int` `i=2; i

## Java

 `// A school method based JAVA program  ` `// to check if a number is prime ` `class` `GFG { ` `     `  `    ``static` `boolean` `isPrime(``int` `n) ` `    ``{ ` `        ``// Corner case ` `        ``if` `(n <= ``1``) ``return` `false``; ` `     `  `        ``// Check from 2 to n-1 ` `        ``for` `(``int` `i = ``2``; i < n; i++) ` `            ``if` `(n % i == ``0``) ` `                ``return` `false``; ` `     `  `        ``return` `true``; ` `    ``} ` `     `  `    ``// Driver Program  ` `    ``public` `static` `void` `main(String args[]) ` `    ``{ ` `        ``if``(isPrime(``11``)) ` `            ``System.out.println(``" true"``); ` `        ``else` `            ``System.out.println(``" false"``); ` `        ``if``(isPrime(``15``)) ` `            ``System.out.println(``" true"``); ` `        ``else` `            ``System.out.println(``" false"``); ` `         `  `    ``} ` `} ` ` `  `// This code is contributed  ` `// by Nikita Tiwari. `

## Python3

 `# A school method based Python3  ` `# program to check if a number ` `# is prime ` ` `  `def` `isPrime(n): ` ` `  `    ``# Corner case ` `    ``if` `n <``=` `1``: ` `        ``return` `False` ` `  `    ``# Check from 2 to n-1 ` `    ``for` `i ``in` `range``(``2``, n): ` `        ``if` `n ``%` `i ``=``=` `0``: ` `            ``return` `False``; ` ` `  `    ``return` `True` ` `  `# Driver Program to test above function ` `print``(``"true"``) ``if` `isPrime(``11``) ``else` `print``(``"false"``) ` `print``(``"true"``) ``if` `isPrime(``14``) ``else` `print``(``"false"``) ` ` `  `# This code is contributed by Smitha Dinesh Semwal `

## C#

 `// A optimized school method based C# ` `// program to check if a number is prime ` `using` `System; ` ` `  `namespace` `prime ` `{ ` `    ``public` `class` `GFG ` `    ``{      ` `        ``public` `static` `bool` `isprime(``int` `n) ` `        ``{ ` `            ``// Corner cases ` `            ``if` `(n <= 1) ``return` `false``; ` `             `  `            ``for` `(``int` `i = 2; i < n; i++) ` `                ``if` `(n % i == 0) ` `                ``return` `false``; ` `  `  `            ``return` `true``; ` `        ``} ` `         `  `        ``// Driver program ` `        ``public` `static` `void` `Main() ` `        ``{ ` `            ``if` `(isprime(11)) Console.WriteLine(``"true"``); ` `            ``else` `Console.WriteLine(``"false"``); ` `             `  `            ``if` `(isprime(15)) Console.WriteLine(``"true"``); ` `            ``else` `Console.WriteLine(``"false"``); ` `        ``} ` `    ``} ` `} ` ` `  `// This code is contributed by Sam007 `

## PHP

 ` `

Output :

```true
false
```

Time complexity of this solution is O(n)

Optimized School Method
We can do following optimizations:

1. Instead of checking till n, we can check till √n because a larger factor of n must be a multiple of smaller factor that has been already checked.
2. The algorithm can be improved further by observing that all primes are of the form 6k ± 1, with the exception of 2 and 3. This is because all integers can be expressed as (6k + i) for some integer k and for i = -1, 0, 1, 2, 3, or 4; 2 divides (6k + 0), (6k + 2), (6k + 4); and 3 divides (6k + 3). So a more efficient method is to test if n is divisible by 2 or 3, then to check through all the numbers of form 6k ± 1. (Source: wikipedia)
3. Below is the implementation of this solution.

## C++

 `// A optimized school method based C++ program to check ` `// if a number is prime ` `#include ` `using` `namespace` `std; ` ` `  `bool` `isPrime(``int` `n) ` `{ ` `    ``// Corner cases ` `    ``if` `(n <= 1)  ``return` `false``; ` `    ``if` `(n <= 3)  ``return` `true``; ` ` `  `    ``// This is checked so that we can skip  ` `    ``// middle five numbers in below loop ` `    ``if` `(n%2 == 0 || n%3 == 0) ``return` `false``; ` ` `  `    ``for` `(``int` `i=5; i*i<=n; i=i+6) ` `        ``if` `(n%i == 0 || n%(i+2) == 0) ` `           ``return` `false``; ` ` `  `    ``return` `true``; ` `} ` ` `  ` `  `// Driver Program to test above function ` `int` `main() ` `{ ` `    ``isPrime(11)?  cout << ``" true\n"``: cout << ``" false\n"``; ` `    ``isPrime(15)?  cout << ``" true\n"``: cout << ``" false\n"``; ` `    ``return` `0; ` `} `

## Java

 `// A optimized school method based Java  ` `// program to check if a number is prime ` `import` `java.io.*; ` ` `  `class` `GFG { ` `     `  `    ``static` `boolean` `isPrime(``int` `n) ` `    ``{ ` `        ``// Corner cases ` `        ``if` `(n <= ``1``) ``return` `false``; ` `        ``if` `(n <= ``3``) ``return` `true``; ` `     `  `        ``// This is checked so that we can skip  ` `        ``// middle five numbers in below loop ` `        ``if` `(n % ``2` `== ``0` `|| n % ``3` `== ``0``) ``return` `false``; ` `     `  `        ``for` `(``int` `i = ``5``; i * i <= n; i = i + ``6``) ` `            ``if` `(n % i == ``0` `|| n % (i + ``2``) == ``0``) ` `            ``return` `false``; ` `     `  `        ``return` `true``; ` `    ``} ` ` `  ` `  `    ``// Driver Program  ` `    ``public` `static` `void` `main(String args[]) ` `    ``{ ` `        ``if``(isPrime(``11``)) ` `            ``System.out.println(``" true"``); ` `        ``else` `            ``System.out.println(``" false"``); ` `        ``if``(isPrime(``15``)) ` `            ``System.out.println(``" true"``); ` `        ``else` `            ``System.out.println(``" false"``); ` `         `  `    ``} ` `} ` ` `  `/*This code is contributed by Nikita Tiwari.*/`

## Python3

 `# A optimized school method based  ` `# Python3 program to check ` `# if a number is prime ` ` `  ` `  `def` `isPrime(n) : ` `    ``# Corner cases ` `    ``if` `(n <``=` `1``) : ` `        ``return` `False` `    ``if` `(n <``=` `3``) : ` `        ``return` `True` ` `  `    ``# This is checked so that we can skip  ` `    ``# middle five numbers in below loop ` `    ``if` `(n ``%` `2` `=``=` `0` `or` `n ``%` `3` `=``=` `0``) : ` `        ``return` `False` ` `  `    ``i ``=` `5` `    ``while``(i ``*` `i <``=` `n) : ` `        ``if` `(n ``%` `i ``=``=` `0` `or` `n ``%` `(i ``+` `2``) ``=``=` `0``) : ` `            ``return` `False` `        ``i ``=` `i ``+` `6` ` `  `    ``return` `True` ` `  ` `  `# Driver Program  ` ` `  `if``(isPrime(``11``)) : ` `    ``print``(``" true"``) ` `else` `: ` `    ``print``(``" false"``) ` `     `  `if``(isPrime(``15``)) : ` `    ``print``(``" true"``) ` `else` `:  ` `    ``print``(``" false"``) ` `     `  `     `  `# This code is contributed  ` `# by Nikita Tiwari. `

## C#

 `// A optimized school method based C#  ` `// program to check if a number is prime ` `using` `System; ` ` `  `class` `GFG ` `{ ` `    ``public` `static` `bool` `isPrime(``int` `n) ` `    ``{ ` `        ``// Corner cases ` `        ``if` `(n <= 1) ``return` `false``; ` `        ``if` `(n <= 3) ``return` `true``; ` `     `  `        ``// This is checked so that we  ` `        ``// can skip middle five numbers ` `        ``// in below loop ` `        ``if` `(n % 2 == 0 || n % 3 == 0) ``return` `false``; ` `     `  `        ``for` `(``int` `i = 5; i * i <= n; i = i + 6) ` `            ``if` `(n % i == 0 || n % (i + 2) == 0) ` `            ``return` `false``; ` `     `  `        ``return` `true``; ` `    ``} ` `     `  `    ``// Driver Code ` `    ``public` `static` `void` `Main() ` `    ``{ ` `            ``if` `(isPrime(11)) Console.WriteLine(``"true"``); ` `            ``else` `Console.WriteLine(``"false"``); ` `             `  `            ``if` `(isPrime(15)) Console.WriteLine(``"true"``); ` `            ``else` `Console.WriteLine(``"false"``); ` `    ``} ` `} ` ` `  `// This code is contributed by aj_36 ` `        `

## PHP

 ` `

Output :

```true
false
```

Time complexity of this solution is O(√n)

Primality Test | Set 2 (Fermat Method)