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

• Last Updated : 12 Nov, 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`

Time Complexity: O(log(max(x, k)))

Auxiliary Space;:O(1)

My Personal Notes arrow_drop_up