Primality Test | Set 1 (Introduction and School Method) - GeeksforGeeks

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
 
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++
Java
Python3
C#
PHP
Javascript
// A school method based C++ program to check if a// number is prime#include <bits/stdc++.h>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<n; i++)        if (n%i == 0)            return false;     return true;} // Driver Program to test above functionint main(){    isPrime(11)?  cout << " true\n": cout << " false\n";    isPrime(15)?  cout << " true\n": cout << " false\n";    return 0;}
// A school method based JAVA program// to check if a number is primeclass 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.
# 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 functionprint("true") if isPrime(11) else print("false")print("true") if isPrime(14) else print("false") # This code is contributed by Smitha Dinesh Semwal
// A optimized school method based C#// program to check if a number is primeusing 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// A school method based PHP// program to check if a number// is prime function isPrime($n){    // Corner case    if ($n <= 1) return false;     // Check from 2 to n-1    for ($i = 2; $i < $n; $i++)        if ($n % $i == 0)            return false;     return true;} // Driver Code$tet = isPrime(11) ? " true\n" :                     " false\n";echo $tet;$tet = isPrime(15) ? " true\n" :                     " false\n";echo $tet; // This code is contributed by m_kit?>
<script> // A school method based Javascript program to check if a// number is primefunction isPrime(n){    // Corner case    if (n <= 1) return false;     // Check from 2 to n-1    for (let i = 2; i < n; i++)        if (n % i == 0)            return false;    return true;} // Driver Program to test above function    isPrime(11)? document.write(" true" + "<br>"): document.write(" false" + "<br>");    isPrime(15)? document.write(" true" + "<br>"): document.write(" false" + "<br>"); // This code is contributed by Mayank Tyagi </script>
Output :  
true
false
Time complexity of this solution is O(n)Optimized School Method We can do following optimizations: 
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.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)
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.
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)
jit_t
mayanktyagi1709
number-theory
Prime Number
Mathematical
number-theory
Mathematical
Prime Number
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Merge two sorted arrays
Modulo Operator (%) in C/C++ with Examples
Program to find sum of elements in a given array
Program for Decimal to Binary Conversion
Program for factorial of a number
Operators in C / C++
The Knight's tour problem | Backtracking-1
Find minimum number of coins that make a given value
Print all possible combinations of r elements in a given array of size n
Minimum number of jumps to reach end