1798 - 求最大公约数和最小公倍数

给出两个正整数,求出它们的最大公约数和最小公倍数。

题目输入

第一行输入一个整数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

C语言解答

#include <stdio.h>
int gcd(int m, int n){
    return (n>0) ? gcd(n, m%n) : m;
}
int lcm(int m, int n){
    return m * n / gcd(m,n);
}
int main(){
    int n,a,b,c;
    scanf("%d",&n);
    while(n--){
        scanf("%d %d",&a, &b);
        printf("%d %d\n", gcd(a, b), lcm(a, b));
    }
    return 0;
}

C++解答

#include<iostream>
using namespace std;
int gcd(int a,int b){
	if(b==0)
		return a;
	else
		return gcd(b,a%b);
}
int main(){
	int n;
	cin>>n;
	while(n--){
		int a,b,max,min;
		cin>>a>>b;
		min=gcd(a,b);
		max=a*b/min;
		cout<<min<<" "<<max<<endl;

	}
}
时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题