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

• Difficulty Level : Easy
• Last Updated : 17 Mar, 2021

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```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

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

 ``

## Javascript

 ``

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)

My Personal Notes arrow_drop_up