1798 - 求最大公约数和最小公倍数
时间限制 : 1 秒
内存限制 : 128 MB
给出两个正整数,求出它们的最大公约数和最小公倍数。
题目输入
第一行输入一个整数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; } }
Java解答
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan=new Scanner(System.in); int n=scan.nextInt(); while(n-->0) { int i=scan.nextInt(); int j=scan.nextInt(); int x=i,y=j; if(i>=j){ int a=i%j; while(a!=0){ i=j; j=a; a=i%j; } System.out.print(j+" "); }else{ int t; t=j; j=i; i=t; int a=i%j; while(a!=0){ i=j; j=a; a=i%j; } System.out.print(j+" "); } System.out.println((x*y)/j); } } }