给定两个整数X和K ,任务是找出X 2是否能被K整除。这里, K和X都可以位于[1,10 18 ]范围内。
例子:
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.
方法:
如上所述, X可以位于[1,10 18 ]范围内,因此我们无法直接检查X 2是否可以被K整除,因为它会导致内存溢出。因此,有效的方法是首先计算X和K 的最大公约数。计算 GCD 后,我们将其作为X和K可以除的最大部分。通过 GCD 减少 K 并检查X是否可以被减少的K整除。
下面是上述方法的实现:
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
输出:
YES