問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
2 つの整数 A , B の最大公約数(以後 gcd(A , B))を高速に求めるアルゴリズムとして、ユークリッドの互除法があります。
gcd の演算では、3 つの整数 a, b, c の最大公約数は、gcd(gcd(a,b),c) で求めることができます。
これは 4 つ以上の整数の場合も同様で、a , b , c , d , e , ... の最大公約数は
gcd(...gcd(gcd(gcd(gcd(a,b),c),d),e)...) で求めることができます。
例として、(9,27,33) の最大公約数は gcd(gcd(9,27),33) = gcd(9,33) = 3 といった具合に求めることができます。
また、最大公約数(以後 gcd)と対になる値として、最小公倍数(以後 lcm)があります。
lcm の演算についても gcd と同様に、3 つの整数 a, b, c の最小公倍数は、lcm(lcm(a,b),c) で求めることができます。
これは 4 つ以上の整数の場合も同様で、a , b , c , d , e , ... の最小公倍数は
lcm(...lcm(lcm(lcm(lcm(a,b),c),d),e)...) で求めることができます。
与えられる整数の数 N と、整数 A_1, ..., A_N が与えられるので、 A_1, ..., A_N の最大公約数と最小公倍数を求めてください。
N
A_1
...
A_N
gcd(A_1 , ... , A_N)
lcm(A_1 , ... , A_N)
・1 ≦ N ≦ 100
・1 ≦ A_i ≦ 1000 (1 ≦ i ≦ N)
・lcm(A_1, ..., A_N) ≦ 10^12
3
2
4
8
2
8
5
2
3
5
7
11
1
2310