JAVA编写一个方法实现获得两个整数m,n的最大公约数
时间: 2024-05-08 22:17:10 浏览: 19
以下是JAVA代码实现:
```java
public static int getGreatestCommonDivisor(int m, int n) {
if (n == 0) {
return m;
} else {
return getGreatestCommonDivisor(n, m % n);
}
}
```
该方法采用递归方式实现辗转相除法求最大公约数。当n等于0时,m就是最大公约数;否则,计算m除以n的余数并将n赋值给m,将余数赋值给n,再次递归计算即可。
相关问题
用JAVA编写一个子类返回两个整数的最大公约数
好的,以下是用 Java 编写的子类来返回两个整数的最大公约数:
```java
public class MaxGCD {
private int num1;
private int num2;
public MaxGCD(int num1, int num2) {
this.num1 = num1;
this.num2 = num2;
}
public int gcd() {
int smaller = Math.min(num1, num2);
for (int i = smaller; i > 0; i--) {
if (num1 % i == 0 && num2 % i == 0) {
return i;
}
}
return -1;
}
}
```
在这个类中,我们使用了构造方法来接收两个整数。然后,我们定义了一个方法 `gcd` 来计算最大公约数。在方法中,我们首先找到两个数中较小的一个,然后从这个较小的数开始倒序循环,如果同时能被这两个数整除,就返回这个数,即为最大公约数。如果没有找到最大公约数,则返回 -1。
使用这个类,你可以创建一个 `MaxGCD` 的实例,并调用 `gcd` 方法来计算两个整数的最大公约数。例如:
```java
MaxGCD maxGcd = new MaxGCD(24, 36);
System.out.println(maxGcd.gcd()); // 输出:12
```
这里我们创建了一个 `MaxGCD` 的实例,传入了两个整数 24 和 36,然后调用了 `gcd` 方法,得到了它们的最大公约数 12。
用java编写输入两个正整数m和n,求其最大公约数和最小公倍数。
这是一个用Java编写的求两个正整数m和n的最大公约数和最小公倍数的程序。其中最大公约数和最小公倍数的计算分别采用了两种不同的方法。
1. 最大公约数的计算方法:
首先初始化为零,存公约数。公约数从2开始,公约数的最大为两个数中最小的那个,故i<=(a1<a2?a1:a2)。a1<a2?a1:a2为三元运算,判断两个数的最小值。如果两个数同时除尽,则为公约数。由于公约数是从小到大,所以循环到最后一个便是最大公约数。
2. 最小公倍数的计算方法:
首先初始化为零,存公倍数。公倍数从两个数的乘积开始,公倍数的最小为两个数中最大的那个,故j>=(a1<a2?a1:a2)。a1<a2?a1:a2为三元运算,判断两个数的最大值。如果同时除尽两个数,则为公倍数。由于公倍数是从大到小,所以循环到最后一个便是最小公倍数。
下面是完整代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s1 = new Scanner(System.in);
System.out.print("请输入第一个数:");
int a1 = s1.nextInt();
System.out.print("请输入第二个数:");
int a2 = s1.nextInt();
int max=0,min=0;
for(int i=2;i<=(a1<a2?a1:a2);i++) {
if(a1%i==0 && a2%i==0) {
max=i;
}
}
for(int j=a1*a2;j>=(a1>a2?a1:a2);j--) {
if(j%a1==0 && j%a2==0) {
min=j;
}
}
System.out.println("最大公约数为:"+max);
System.out.println("最小公倍数为:"+min);
}
}