1. paizaラーニングトップ
  2. レベルアップ問題集
  3. ユークリッドの互除法メニュー応用編(言語選択)
  4. 問題一覧 Clojure(Beta)編
  5. 3 つ以上の整数の最大公約数・最小公倍数 Clojure(Beta)編

ユークリッドの互除法メニュー応用編のサムネイル
3 つ以上の整数の最大公約数・最小公倍数 Clojure(Beta)編(paizaランク C 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

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


・1 行目で、与えられる整数の個数 N が与えられます。
・続く N 行では、整数 A_i (1 ≦ i ≦ N) が先頭から順に与えられます。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

gcd(A_1 , ... , A_N)
lcm(A_1 , ... , A_N)


・1 行目に、A_1 , ... , A_N の最大公約数の値 gcd(A_1 , ... , A_N) を出力してください。
・2 行目に、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

入力例1

3
2
4
8

出力例1

2
8

入力例2

5
2
3
5
7
11

出力例2

1
2310

問題一覧へ戻る

ページの先頭へ戻る