java判断两个数字是否互质
时间: 2023-08-08 22:05:48 浏览: 344
可以使用辗转相除法来判断两个数字是否互质。如果两个数字的最大公约数是1,则这两个数字互质。
以下是Java代码示例:
```java
public static boolean isCoprime(int num1, int num2) {
int gcd = getGCD(num1, num2);
return gcd == 1;
}
public static int getGCD(int num1, int num2) {
if (num2 == 0) {
return num1;
}
return getGCD(num2, num1 % num2);
}
```
可以先调用 `getGCD()` 方法获取两个数字的最大公约数,再判断是否等于1来确定两个数字是否互质。
相关问题
牛郎织女Java语音 算法题代码
牛郎织女问题,也称为中国剩余定理(Chinese Remainder Theorem,CRT),是一个经典的计算机科学算法题目,通常用于教学。它涉及到找到两个给定数值范围内的最小整数,该整数同时满足这两个范围之间的同余条件。
在Java中,你可以使用循环和条件判断来解决这个问题。这里提供一个简单的伪代码示例:
```java
// 定义函数牛郎织女算法
public int cowherdAndWeaver(int a1, int b1, int m1, int a2, int b2, int m2) {
// 计算最大公约数
int gcd = gcd(m1, m2);
// 如果模数互质,则直接求解
if (gcd == 1) {
return ((a1 * inverse(b2, m1) % m2 + a2 * inverse(b1, m2) % m1) % (m1 * m2)) % (m1 * m2);
} else {
throw new IllegalArgumentException("Moduli are not coprime.");
}
}
// 辅助函数,计算两个数的最大公约数
private int gcd(int a, int b) {
while (b != 0) {
int temp = a;
a = b;
b = temp % b;
}
return a;
}
// 取逆函数,欧几里得算法求模下的逆元
private int inverse(int a, int m) {
return ExtendedEuclideanAlgorithm(a, m).getInverse();
}
// 欧几里得扩展算法,用于求解模下逆元
private class ExtendedEuclideanAlgorithm {
private int x, y, g;
public ExtendedEuclideanAlgorithm(int a, int b) {
this.g = gcd(a, b);
if (g == 1) {
this.x = b == 0 ? 1 : -((a / b) * x);
this.y = a == 0 ? 1 : -((b / a) * y);
}
}
public int getInverse() {
return x % g;
}
}
```
阅读全文