Related Articles

# Check if the square of a number is divisible by K or not

• Last Updated : 05 Apr, 2021

Given two integers, X and K, the task is to find if X2 is divisible by K or not. Here, both K and X can lie in the range [1,1018].

Examples:

Input: X = 6, K = 9
Output: YES
Explanation:
Since 62 is equal to 36, which is divisible by 9.

Input: X = 7, K = 21
Output: NO
Explanation:
Since 72 is equal to 49, which is not divisible by 21.

Approach:
As mentioned above, X can lie in the range [1,1018], so we can not directly check if X2 is divisible by K or not as it can cause a memory overflow. Hence the efficient approach is to first calculate the Greatest Common Divisor of X and K. After the GCD is calculated, we will take it as the maximum portion which we can divide from X and K. Reduce K by GCD and check if X is divisible by the reduced K or not.

Below is the implementation of above approach:

## C++

 `// C++ implementation to``// check if the square of X is``// divisible by K` `#include ``using` `namespace` `std;` `// Function to return if``// square of X is divisible``// by K``void` `checkDivisible(``int` `x, ``int` `k)``{``    ``// Finding gcd of x and k``    ``int` `g = __gcd(x, k);` `    ``// Dividing k by their gcd``    ``k /= g;` `    ``// Check for divisibility of X``    ``// by reduced K``    ``if` `(x % k == 0) {``        ``cout << ``"YES\n"``;``    ``}``    ``else` `{``        ``cout << ``"NO\n"``;``    ``}``}` `// Driver Code``int` `main()``{``    ``int` `x = 6, k = 9;``    ``checkDivisible(x, k);` `    ``return` `0;``}`

## Java

 `// Java implementation to``// check if the square of X is``// divisible by K` `class` `GFG{` `// Function to return if``// square of X is divisible``// by K``static` `void` `checkDivisible(``int` `x, ``int` `k)``{``    ``// Finding gcd of x and k``    ``int` `g = __gcd(x, k);` `    ``// Dividing k by their gcd``    ``k /= g;` `    ``// Check for divisibility of X``    ``// by reduced K``    ``if` `(x % k == ``0``)``    ``{``        ``System.out.print(``"YES\n"``);``    ``}``    ``else``    ``{``        ``System.out.print(``"NO\n"``);``    ``}``}``static` `int` `__gcd(``int` `a, ``int` `b)``{``    ``return` `b == ``0` `? a : __gcd(b, a % b);    ``}` `// Driver Code``public` `static` `void` `main(String[] args)``{``    ``int` `x = ``6``, k = ``9``;``    ``checkDivisible(x, k);``}``}` `// This code is contributed by gauravrajput1`

## Python3

 `# Python3 implementation to``# check if the square of X is``# divisible by K` `from` `math ``import` `gcd` `# Function to return if``# square of X is divisible``# by K``def` `checkDivisible(x, k):``    ` `    ``# Finding gcd of x and k``    ``g ``=` `gcd(x, k)` `    ``# Dividing k by their gcd``    ``k ``/``/``=` `g` `    ``# Check for divisibility of X``    ``# by reduced K``    ``if` `(x ``%` `k ``=``=` `0``):``        ``print``(``"YES"``)``    ``else``:``        ``print``(``"NO"``)` `# Driver Code``if` `__name__ ``=``=` `'__main__'``:``    ` `    ``x ``=` `6``    ``k ``=` `9``    ``checkDivisible(x, k);``    ` `# This code is contributed by Bhupendra_Singh`

## C#

 `// C# implementation to check``// if the square of X is``// divisible by K``using` `System;` `class` `GFG{` `// Function to return if``// square of X is divisible``// by K``static` `void` `checkDivisible(``int` `x, ``int` `k)``{``    ` `    ``// Finding gcd of x and k``    ``int` `g = __gcd(x, k);` `    ``// Dividing k by their gcd``    ``k /= g;` `    ``// Check for divisibility of X``    ``// by reduced K``    ``if` `(x % k == 0)``    ``{``        ``Console.Write(``"YES\n"``);``    ``}``    ``else``    ``{``        ``Console.Write(``"NO\n"``);``    ``}``}` `static` `int` `__gcd(``int` `a, ``int` `b)``{``    ``return` `b == 0 ? a : __gcd(b, a % b);    ``}` `// Driver Code``public` `static` `void` `Main(String[] args)``{``    ``int` `x = 6, k = 9;``    ` `    ``checkDivisible(x, k);``}``}` `// This code is contributed by Princi Singh`

## Javascript

 ``
Output:
`YES`

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.

My Personal Notes arrow_drop_up