2012年7月3日火曜日

AOJ Volume0 0005 GCD and LCM

最大公約数はユークリッドの互除法で、
最小公倍数は  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 件のコメント:

コメントを投稿