アットウィキロゴ

GCD and LCM

0005 : GCD and LCM



解説

2つの正の整数a,bの最大公約数(GCD)と最小公倍数(LCM)を求める。
LCMはGCDを用いて計算することができるので、まずはGCDを先に求める。
GCDを求める方法にはユークリッドの互除法がある。→ ユークリッドの互除法 - Wikipedia
次に、LCMは「a / (a,bのGCD) * b」という式で求めることができる。

プログラム

C


C++

+ ...
#include <iostream>
using namespace std;

int gcd(int a, int b) {
    if (a < b) {
        int c = a;
        a = b;
        b = c;
    }
 
    while (b != 0) {
        int c = a % b;
        a = b;
        b = c;
    }
 
    return a;
}
 
int lcm(int a, int b) {
    return a / gcd(a, b) * b;
}
 
int main() {
    int a, b;
    while (cin >> a >> b) {
        cout << gcd(a, b) << " " << lcm(a, b) << endl;
    }
 
    return 0;
}


Java

最終更新:2012年12月16日 17:45