给定2个正整数,求它们的最大公约数和最小公倍数,并输出。 输入格式: 输入有若干组。 每组数据,在一行中给出两个正整数m和n(≤1000),中间有1个空格。 输出格式: 对于每组输入,在一行中顺序输出m和n的最大公约数和最小公倍数,两数字间以1个空格分隔。
时间: 2023-04-29 14:03:35 浏览: 204
题目翻译:
给定两个正整数,求它们的最大公约数和最小公倍数,并输出。
输入格式:
输入有若干组数据。每组数据,在一行中给出两个正整数m和n(≤1000),中间有1个空格。
输出格式:
对于每组输入,在一行中顺序输出m和n的最大公约数和最小公倍数,两数字间以1个空格分隔。
相关问题
java给定2个正整数,求它们的最大公约数和最小公倍数,并输出。 输入格式: 输入有若干组。 每组数据,在一行中给出两个正整数M和N(≤1000),中间有1个空格。 输出格式: 对于每组输入,在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1个空格分隔。
在Java中,你可以使用欧几里得算法(也叫辗转相除法)来计算两个正整数的最大公约数(GCD),然后根据最大公约数和其中一个数求最小公倍数(LCM)。以下是简单的步骤:
首先,编写一个计算GCD的函数:
```java
public static int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
```
接下来,计算LCM,可以用公式 LCM(a, b) = |a * b| / GCD(a, b) 来实现:
```java
public static int lcm(int a, int b) {
return a * (b / gcd(a, b));
}
```
最后,主程序部分接受用户输入并输出结果:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
int M = scanner.nextInt();
int N = scanner.nextInt();
int gcdResult = gcd(M, N);
int lcmResult = lcm(M, N);
System.out.println(gcdResult + " " + lcmResult);
}
scanner.close();
}
}
```
当你运行这个程序,它会读取输入的两个正整数,计算它们的最大公约数和最小公倍数,然后按照指定的格式输出结果。
用Java写一个程序,给定2个正整数,求它们的最大公约数和最小公倍数,并输出,输入格式: 输入有若干组。 每组数据,在一行中给出两个正整数M和N(≤1000),中间有1个空格。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int m = scanner.nextInt();
int n = scanner.nextInt();
int gcd = gcd(m, n);
int lcm = lcm(m, n);
System.out.println(gcd + " " + lcm);
}
}
// 求最大公约数
public static int gcd(int m, int n) {
if (n == 0) {
return m;
} else {
return gcd(n, m % n);
}
}
// 求最小公倍数
public static int lcm(int m, int n) {
return m * n / gcd(m, n);
}
}
阅读全文