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

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.

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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

 `# Python 3 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 `

Output:

```YES
``` My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.