给你一个正整数 n 返回 2 和 n 的最小公倍数,用Java编写代码
时间: 2024-03-04 17:48:07 浏览: 22
可以使用以下代码实现:
```java
public static int getLCM(int n) {
int lcm = 2;
for (int i = 3; i <= n; i++) {
lcm = Math.abs(lcm * i) / gcd(lcm, i);
}
return lcm;
}
public static int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
```
其中 `getLCM` 方法用于计算 2 和 n 的最小公倍数,首先将 lcm 初始化为 2,然后遍历从 3 到 n 的所有数字,每次将 lcm 与 i 的最小公倍数计算出来,并将结果赋值给 lcm。最后返回 lcm 即可。
`gcd` 方法用于计算两个数字的最大公约数,采用递归的方式实现。
相关问题
用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);
}
}
JAVA输入两个正整数m和n,求其最大公约数和最小公倍数。
输入两个正整数m和n,可以使用Java语言编写程序来求它们的最大公约数和最小公倍数。其中最大公约数可以使用辗转相除法(欧几里得算法)来求解,而最小公倍数可以通过先求出最大公约数,然后使用公式“最小公倍数=两个数相乘/最大公约数”来计算得出。以下是一个Java程序的示例代码:
```
import java.util.Scanner;
public class GcdLcm {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入第一个正整数:");
int m = scan.nextInt();
System.out.print("请输入第二个正整数:");
int n = scan.nextInt();
int gcd = getGcd(m, n);
int lcm = m * n / gcd;
System.out.println("最大公约数为:" + gcd);
System.out.println("最小公倍数为:" + lcm);
}
public static int getGcd(int a, int b) {
if (b == 0) {
return a;
} else {
return getGcd(b, a % b);
}
}
}
```