3752 - 最大公约数和最小公倍数
时间限制 : 1 秒
内存限制 : 128 MB
输入k对正整数m,n,求m,n的最大公约数和最小公倍数。
题目输入
【输入文件】
输入第一行有一个整数k,跟着有k行,分别是m,n。(1<=k<=100,1<=m,n<=1000)
题目输出
【输出文件】
输出有k行,分别是每对数m,n的最大公约数和最小公倍数(用空格隔开)。
输入/输出样例
输入格式
3 24 18 12 9 14 28
输出格式
6 72 3 36 14 28
C语言解答
#include <stdio.h> int fun ( int a , int b ) { int i , t ; if ( a < b ) { t = a ; a = b ; b = t ; } if ( a % b == 0 ) { return b ; } else { for ( i = b - 1 ; i >= 1 ; i-- ) { if ( a % i == 0 && b % i == 0 ) return i ; } } } int main ( void ) { int n , i , a , b , c ; scanf ( "%d", &n ) ; for ( i = 1 ; i <= n ; i++ ) { scanf ( "%d%d", &a , &b ) ; c = fun ( a , b ) ; printf ( "%d %d\n" , c , (a * b / c ) ) ; } return 0 ; }
C++解答
#include <iostream> #include <stdio.h> using namespace std; int main() { int k,m,n,a,b; scanf("%d",&k); while(k--) { int t; scanf("%d %d",&m,&n); if(m<n){ a=n;b=m; } else { a=m;b=n; } while(b!=0) { t=a%b;a=b;b=t; } printf("%d %d\n",a,m*n/a); } return 0; }