VOOZH about

URL: https://www.geeksforgeeks.org/dsa/eulers-criterion-check-if-square-root-under-modulo-p-exists/

⇱ Euler's criterion (Check if square root under modulo p exists) - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Euler's criterion (Check if square root under modulo p exists)

Last Updated : 23 Jul, 2025

Given a number 'n' and a prime p, find if square root of n under modulo p exists or not. A number x is square root of n under modulo p if (x*x)%p = n%p.

Examples : 

Input: n = 2, p = 5
Output: false
There doesn't exist a number x such that 
(x*x)%5 is 2

Input: n = 2, p = 7
Output: true
There exists a number x such that (x*x)%7 is
2. The number is 3.


A Naive Method is to try every number x where x varies from 2 to p-1. For every x, check if (x * x) % p is equal to n % p. 

Output : 

Yes


Time Complexity of this method is O(p).
Space Complexity: O(1) since only constant variables being used

This problem has a direct solution based on Euler's Criterion. 
Euler's criterion states that 

Square root of n under modulo p exists if and only if
n(p-1)/2 % p = 1

Here square root of n exists means is, there exist
an integer x such that (x * x) % p = 1


Below is implementation based on above criterion. Refer Modular Exponentiation for power function.

Output : 

Yes


How does this work? 

If p is a prime, then it must be an odd number and (p-1) 
must be an even, i.e., (p-1)/2 must be an integer.

Suppose a square root of n under modulo p exists, then
there must exist an integer x such that,
 x2 % p = n % p 
or, 
 x2 ? n mod p

Raising both sides to power (p-1)/2,
 (x2)(p-1)/2 ? n(p-1)/2 mod p 
 xp-1 ? n(p-1)/2 mod p

Since p is a prime, from Fermat's theorem, we can say that 
 xp-1 ? 1 mod p

Therefore,
 n(p-1)/2 ? 1 mod p 

Time Complexity: O(logp) 
Auxiliary Space: O(1)
You may like to see below: 
Find Square Root under Modulo p | Set 1 (When p is in form of 4*i + 3)
 

Comment
Article Tags: