最大公約数はユークリッドの互除法で、
最小公倍数は xy/gcd(x,y)で。
/***************************
* 2012/05/11
* AOJ Volume0 0005
* GCD and LCM
* crane
****************************/
#include<iostream>
using namespace std;
int gcd(int x, int y); //最大公約数 ユークリッドの互除法
int lcm(int x, int y, int gcd); //最小公倍数 lcm(x,y)=xy/gcd(x,y)
int main(){
int x, y;
int g_res;
long l_res;
while(cin >> x >> y){
g_res = gcd(x,y);
l_res = lcm(x,y,g_res);
cout << g_res << " " << l_res << "\n";
}
return 0;
}
int gcd(int x, int y){
if(y==0) return x;
else return gcd(y, x%y);
}
int lcm(int x, int y, int gcd){
return x/gcd*y;
}
0 件のコメント:
コメントを投稿