Prime Numbers - GeeksforGeeks (2022)

What are prime numbers?

  • A prime number is a natural number greater than 1, which is only divisible by 1 and itself. First few prime numbers are: 2 3 5 7 11 13 17 19 23…..

Prime Numbers - GeeksforGeeks (1)

Prime numbers

  • In other words, the prime number is a positive integer greater than 1 that has exactly two factors, 1 and the number itself.
  • There are many prime numbers, such as 2, 3, 5, 7, 11, 13, etc.
  • Keep in mind that 1 cannot be either prime or composite.
  • The remaining numbers, except for 1, are classified as prime and composite numbers.

Prime Numbers - GeeksforGeeks (2)

DSA Self Paced Course

Some interesting facts about Prime numbers:

  • Except for 2, which is the smallest prime number and the only even prime number, all prime numbers are odd numbers.
  • Every prime number can be represented in form of 6n + 1 or 6n – 1 except the prime numbers 2 and 3, where n is a natural number.
  • Two and Three are only two consecutive natural numbers that are prime.
  • Goldbach Conjecture: Every even integer greater than 2 can be expressed as the sum of two primes.
  • Wilson Theorem: Wilson’s theorem states that a natural number p > 1 is a prime number if and only if
(p - 1) ! ≡ -1 mod p OR (p - 1) ! ≡ (p-1) mod p
an-1 ≡ 1 (mod n)OR an-1 % n = 1
  • Prime Number Theorem: The probability that a given, randomly chosen number n is prime is inversely proportional to its number of digits, or to the logarithm of n.
  • Lemoine’s Conjecture: Any odd integer greater than 5 can be expressed as a sum of an odd prime (all primes other than 2 are odd) and an even semiprime. A semiprime number is a product of two prime numbers. This is called Lemoine’s conjecture.

Properties of prime numbers:

  • Every number greater than 1 can be divided by at least one prime number.
  • Every even positive integer greater than 2 can be expressed as the sum of two primes.
  • Except 2, all other prime numbers are odd. In other words, we can say that 2 is the only even prime number.
  • Two prime numbers are always coprime to each other.
  • Each composite number can be factored into prime factors and individually all of these are unique in nature.

Prime numbers and co-prime numbers:

It is important to distinguish between prime numbers and co-prime numbers. Listed below are the differences between prime and co-prime numbers.

  • A coprime number is always considered as a pair, whereas a prime number is considered as a single number.
  • Co-prime numbers are numbers that have no common factor except 1. In contrast, prime numbers do not have such a condition.
  • A co-prime number can be either prime or composite, but its greatest common factor (GCF) must always be 1. Unlike composite numbers, prime numbers have only two factors, 1 and the number itself.
  • Example of co-prime: 13 and 15 are co-primes. The factors of 13 are 1 and 13 and the factors of 15 are 1, 3 and 5. We can see that they have only 1 as their common factor, therefore, they are coprime numbers.
  • Example of prime: A few examples of prime numbers are 2, 3, 5, 7 and 11 etc.

How do we check whether a number is Prime or not?

Naive Approach: A naive solution is to iterate through all numbers from 2 to sqrt(n) and for every number check if it divides n. If we find any number that divides, we return false.

Below is the implementation:

C++14

// A school method based C++ program to

// check if a number is prime

#include <bits/stdc++.h>

using namespace std;

// function check whether a number

// is prime or not

bool isPrime(int n)

{

// Corner case

if (n <= 1)

return false;

// Check from 2 to square root of n

for (int i = 2; i <= sqrt(n); i++)

if (n % i == 0)

return false;

return true;

}

// Driver Code

int main()

{

isPrime(11) ? cout << " true\n" : cout << " false\n";

return 0;

}

Java

// A school method based Java program to

// check if a number is prime

import java.lang.*;

import java.util.*;

class GFG {

// Check for number prime or not

static boolean isPrime(int n)

{

// Check if number is less than

// equal to 1

if (n <= 1)

return false;

// Check if number is 2

else if (n == 2)

return true;

// Check if n is a multiple of 2

else if (n % 2 == 0)

return false;

// If not, then just check the odds

for (int i = 3; i <= Math.sqrt(n); i += 2) {

if (n % i == 0)

return false;

}

return true;

}

// Driver code

public static void main(String[] args)

{

if (isPrime(19))

System.out.println("true");

else

System.out.println("false");

}

}

// This code is contributed by Ronak Bhensdadia

Python3

# A school method based Python3 program

# to check if a number is prime

# function check whether a number

# is prime or not

# import sqrt from math module

from math import sqrt

def isPrime(n):

# Corner case

if (n <= 1):

return False

# Check from 2 to sqrt(n)

for i in range(2, int(sqrt(n))+1):

if (n % i == 0):

return False

return True

# Driver Code

if isPrime(11):

print("true")

else:

print("false")

# This code is contributed by Sachin Bisht

C#

// A school method based C# program to

// check if a number is prime

using System;

class GFG {

// function check whether a

// number is prime or not

static bool isPrime(int n)

{

// Corner case

if (n <= 1)

return false;

// Check from 2 to sqrt(n)

for (int i = 2; i < Math.Sqrt(n); i++)

if (n % i == 0)

return false;

return true;

}

// Driver Code

static void Main()

{

if (isPrime(11))

Console.Write(" true");

else

Console.Write(" false");

}

}

// This code is contributed by Sam007

PHP

<?php

// A school method based PHP program to

// check if a number is prime

// function check whether a number

// is prime or not

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

if(isPrime(11))

echo("true");

else

echo("false");

// This code is contributed by Ajit.

?>

Javascript

// A school method based Javascript program to

// check if a number is prime

// function check whether a number

// is prime or not

function 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 Code

isPrime(11) ? console.log(" true" + "<br>") : console.log(" false" + "<br>");

// This code is contributed by Mayank Tyagi

Output

 true

Time Complexity: O(sqrt(n))
Auxiliary space: O(1)

Efficient approach: To check whether the number is prime or not follow the below idea:

In the previous approach given if the size of the given number is too large then its square root will be also very large, so to deal with large size input we will deal with a few numbers such as 1, 2, 3, and the numbers which are divisible by 2 and 3 in separate cases and for remaining numbers, we will iterate our loop from 5 to sqrt(n) and check for each iteration whether that (iteration) or (that iteration + 2) divides n or not. If we find any number that divides, we return false.

Below is the implementation for the above idea:

C++

// A school method based C++ program to

// check if a number is prime

#include <bits/stdc++.h>

using namespace std;

// function check whether a number

// is prime or not

bool isPrime(int n)

{

// Check if n=1 or n=0

if (n <= 1)

return false;

// Check if n=2 or n=3

if (n == 2 || n == 3)

return true;

// Check whether n is divisible by 2 or 3

if (n % 2 == 0 || n % 3 == 0)

return false;

// Check from 5 to square root of n

// Iterate i by (i+6)

for (int i = 5; i <= sqrt(n); i = i + 6)

if (n % i == 0 || n % (i + 2) == 0)

return false;

return true;

}

// Driver Code

int main()

{

isPrime(11) ? cout << "true\n" : cout << "false\n";

return 0;

}

// This code is contributed by Suruchi kumari

C

// A school method based C program to

// check if a number is prime

#include <math.h>

#include <stdio.h>

// function check whether a number

// is prime or not

int isPrime(int n)

{

// Check if n=1 or n=0

if (n <= 1)

return 0;

// Check if n=2 or n=3

if (n == 2 || n == 3)

return 1;

// Check whether n is divisible by 2 or 3

if (n % 2 == 0 || n % 3 == 0)

return 0;

// Check from 5 to square root of n

// Iterate i by (i+6)

for (int i = 5; i * i <= n; i = i + 6)

if (n % i == 0 || n % (i + 2) == 0)

return 0;

return 1;

}

// Driver Code

int main()

{

if (isPrime(11) == 1)

printf("true\n");

else

printf("false\n");

return 0;

}

// This code is contributed by Suruchi Kumari

Java

// Java program to check whether a number

import java.lang.*;

import java.util.*;

class GFG {

// Function check whether a number

// is prime or not

public static boolean isPrime(int n)

{

if (n <= 1)

return false;

// Check if n=2 or n=3

if (n == 2 || n == 3)

return true;

// Check whether n is divisible by 2 or 3

if (n % 2 == 0 || n % 3 == 0)

return false;

// Check from 5 to square root of n

// Iterate i by (i+6)

for (int i = 5; i <= Math.sqrt(n); i = i + 6)

if (n % i == 0 || n % (i + 2) == 0)

return false;

return true;

}

// Driver Code

public static void main(String[] args)

{

if (isPrime(11)) {

System.out.println("true");

}

else {

System.out.println("false");

}

}

}

// This code is contributed by Sayan Chatterjee

Python3

# function check whether a number

# is prime or not

from math import*

def isPrime(n):

# Check if n=1 or n=0

if (n <= 1):

return "false"

# Check if n=2 or n=3

if (n == 2 or n == 3):

return "true"

# Check whether n is divisible by 2 or 3

if (n % 2 == 0 or n % 3 == 0):

return "false"

# Check from 5 to square root of n

# Iterate i by (i+6)

for i in range(5, floor(sqrt(n)), 6):

if (n % i == 0 or n % (i + 2) == 0):

return "false"

return "true"

if isPrime(11):

print("true\n")

else:

print("false\n")

# This code is contributed by uomkar369

C#

// C# program to check whether a number

using System;

class GFG {

// Function check whether a number

// is prime or not

public static bool isPrime(int n)

{

if (n <= 1)

return false;

// Check if n=2 or n=3

if (n == 2 || n == 3)

return true;

// Check whether n is divisible by 2 or 3

if (n % 2 == 0 || n % 3 == 0)

return false;

// Check from 5 to square root of n

// Iterate i by (i+6)

for (int i = 5; i <= Math.Sqrt(n); i = i + 6)

if (n % i == 0 || n % (i + 2) == 0)

return false;

return true;

}

// Driver Code

public static void Main(String[] args)

{

if (isPrime(11)) {

Console.WriteLine("true");

}

else {

Console.WriteLine("false");

}

}

}

// This code is contributed by Abhijeet

// Kumar(abhijeet_19403)

Javascript

// A school method based JS program to

// check if a number is prime

// function check whether a number

// is prime or not

function isPrime(n)

{

// Check if n=1 or n=0

if (n <= 1)

return false;

// Check if n=2 or n=3

if (n == 2 || n == 3)

return true;

// Check whether n is divisible by 2 or 3

if (n % 2 == 0 || n % 3 == 0)

return false;

// Check from 5 to square root of n

// Iterate i by (i+6)

for (var i = 5; i <= Math.sqrt(n); i = i + 6)

if (n % i == 0 || n % (i + 2) == 0)

return false;

return true;

}

// Driver Code

isPrime(11) ? console.log("true") : console.log("false");

// This code is contributed by phasing17

Output :

true

Time complexity: O(sqrt(n))
Auxiliary space: O(1)

Approach 3: To check the number is prime or not using recursion follow the below idea:

Recursion can also be used to check if a number between 2 to n – 1 divides n. If we find any number that divides, we return false.

Below is the implementation for the below idea:

C++

// C++ program to check whether a number

// is prime or not using recursion

#include <iostream>

using namespace std;

// function check whether a number

// is prime or not

bool isPrime(int n)

{

static int i = 2;

// corner cases

if (n == 0 || n == 1) {

return false;

}

// Checking Prime

if (n == i)

return true;

// base cases

if (n % i == 0) {

return false;

}

i++;

return isPrime(n);

}

// Driver Code

int main()

{

isPrime(35) ? cout << " true\n" : cout << " false\n";

return 0;

}

// This code is contributed by yashbeersingh42

Java

// Java program to check whether a number

// is prime or not using recursion

class GFG {

static int i = 2;

// Function check whether a number

// is prime or not

public static boolean isPrime(int n)

{

// Corner cases

if (n == 0 || n == 1) {

return false;

}

// Checking Prime

if (n == i)

return true;

// Base cases

if (n % i == 0) {

return false;

}

i++;

return isPrime(n);

}

// Driver Code

public static void main(String[] args)

{

if (isPrime(35)) {

System.out.println("true");

}

else {

System.out.println("false");

}

}

}

// This code is contributed by divyeshrabadiya07

Python3

# Python3 program to check whether a number

# is prime or not using recursion

# Function check whether a number

# is prime or not

def isPrime(n, i):

# Corner cases

if (n == 0 or n == 1):

return False

# Checking Prime

if (n == i):

return True

# Base cases

if (n % i == 0):

return False

i += 1

return isPrime(n, i)

# Driver Code

if (isPrime(35, 2)):

print("true")

else:

print("false")

# This code is contributed by bunnyram19

C#

// C# program to check whether a number

// is prime or not using recursion

using System;

class GFG {

static int i = 2;

// function check whether a number

// is prime or not

static bool isPrime(int n)

{

// corner cases

if (n == 0 || n == 1) {

return false;

}

// Checking Prime

if (n == i)

return true;

// base cases

if (n % i == 0) {

return false;

}

i++;

return isPrime(n);

}

static void Main()

{

if (isPrime(35)) {

Console.WriteLine("true");

}

else {

Console.WriteLine("false");

}

}

}

// This code is contributed by divyesh072019

Javascript

<script>

// JavaScript program to check whether a number

// is prime or not using recursion

// function check whether a number

// is prime or not

function isPrime(n) {

var i = 1;

// corner cases

if (n == 0 || n == 1) {

return false;

}

// Checking Prime

if (n == i) return true;

// base cases

if (n % i == 0) {

return false;

}

i++;

return isPrime(n);

}

// Driver Code

isPrime(35) ? document.write(" true\n") : document.write(" false\n");

// This code is contributed by rdtank.

</script>

Output

 false

Time Complexity: O(N)
Auxiliary Space: O(N)

Efficient solutions

  • Primality Test | Set 1 (Introduction and School Method)
  • Primality Test | Set 2 (Fermat Method)
  • Primality Test | Set 3 (Miller–Rabin)
  • Primality Test | Set 4 (Solovay-Strassen)
  • Lucas Primality Test

Algorithms to find all prime numbers smaller than the N.

  • Sieve of Eratosthenes
  • Sieve of Eratosthenes in 0(n) time complexity
  • Segmented Sieve
  • Sieve of Sundaram
  • Bitwise Sieve
  • Recent Articles on Sieve!

More problems related to Prime number

  • Find two distinct prime numbers with a given product
  • Print all prime numbers less than or equal to N
  • Recursive program for prime number
  • Find two prime numbers with a given sum
  • Find the highest occurring digit in prime numbers in a range
  • Prime Factorization using Sieve O(log n) for multiple queries
  • Program to print all prime factors of a given number
  • Least prime factor of numbers till n
  • Prime factors of LCM of array elements – GeeksforGeeks
  • Program for Goldbach’s Conjecture
  • Prime numbers and Fibonacci
  • Composite Number
  • Recent Articles on Prime Numbers!
RecommendedSolve DSA problems on GfG Practice.Solve Problems

My Personal Notesarrow_drop_up

Top Articles

You might also like

Latest Posts

Article information

Author: Velia Krajcik

Last Updated: 11/17/2022

Views: 6052

Rating: 4.3 / 5 (74 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: Velia Krajcik

Birthday: 1996-07-27

Address: 520 Balistreri Mount, South Armand, OR 60528

Phone: +466880739437

Job: Future Retail Associate

Hobby: Polo, Scouting, Worldbuilding, Cosplaying, Photography, Rowing, Nordic skating

Introduction: My name is Velia Krajcik, I am a handsome, clean, lucky, gleaming, magnificent, proud, glorious person who loves writing and wants to share my knowledge and understanding with you.