公约数和公倍数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
小明被一个问题给难住了,现在需要你帮帮忙。问题是:给出两个正整数,求出它们的最大公约数和最小公倍数。
-
输入
-
第一行输入一个整数n(0<n<=10000),表示有n组测试数据;
随后的n行输入两个整数i,j(0<i,j<=32767)。
输出
- 输出每组测试数据的最大公约数和最小公倍数 样例输入
-
3 6 6 12 11 33 22
样例输出
-
6 6 1 132 11 66
-
-
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); int sum = s.nextInt(); int[][] arr = new int[sum][2]; int[][] arr1 = new int[sum][2]; for (int i = 0; i < sum; i++) { // 输入到 二维数组 for (int j = 0; j < 2; j++) { arr[i][j] = s.nextInt(); } } int i; for (i = 0; i < arr.length; i++) { if(arr[i][0]<arr[i][1]){ // 将大的数字放到[O] int temp; temp = arr[i][0]; arr[i][0] = arr[i][1]; arr[i][1] = temp; } arr1[i][0] = getMax(arr[i][0],arr[i][1]); arr1[i][1] = getMin(arr[i][0],arr[i][1]); } for (int P = 0; P < arr.length; P++) { System.out.println(arr1[P][0]+" "+arr1[P][1]); } } public static int getMax(int m, int n){ // 最大公约数 int m1 = m; int n1 = n; int Max = 0; for (int i = n1; i > 0; i--) { if(n1%i==0&&m1%i==0){ Max=i; break; } } return Max; } public static int getMin(int m,int n){ // 最小公约数 int m1 = m; int n1 = n; int i = 1; int Min = 0; while (true) { if((n*i)%m==0){ Min = n*i; break; } i++; } return Min; } }
-
第一行输入一个整数n(0<n<=10000),表示有n组测试数据;