# 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 **X ^{2}** is divisible by

**K**or not. Here, both

**K**and

**X**can lie in the range

**[1,10**.

^{18}]**Examples:**

Input:X = 6, K = 9Output:YESExplanation:

Since 6^{2}is equal to 36, which is divisible by 9.

Input:X = 7, K = 21Output:NOExplanation:

Since 7^{2}is equal to 49, which is not divisible by 21.

**Approach:**

As mentioned above, **X** can lie in the range **[1,10 ^{18}]**, so we can not directly check if

**X**is divisible by

^{2}**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 <bits/stdc++.h>` `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

`<script>` `// Javascript implementation to` `// check if the square of X is` `// divisible by K` `// Return gcd of two numbers` `function` `gcd(a, b)` `{` ` ` `return` `b == 0 ? a : gcd(b, a % b);` `}` `// Function to return if` `// square of X is divisible` `// by K` `function` `checkDivisible(x, k)` `{` ` ` ` ` `// Finding gcd of x and k` ` ` `var` `g = gcd(x, k);` ` ` `// Dividing k by their gcd` ` ` `k /= g;` ` ` `// Check for divisibility of X` ` ` `// by reduced K` ` ` `if` `(x % k == 0)` ` ` `{` ` ` `document.write(` `"YES"` `);` ` ` `}` ` ` `else` ` ` `{` ` ` `document.write(` `"NO"` `);` ` ` `}` `}` `// Driver code` `var` `x = 6, k = 9;` `checkDivisible(x, k);` `// This code is contributed by Ankita saini` ` ` `</script>` |

**Output:**

YES

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

Auxiliary Space;:O(1)