No.020 D

最初の部分点は最小公倍数を全探索で求めるのだろう.

2番目の部分点は, の最大公約数 をユークリッドの互除法で求め, 最小公倍数を で計算し, あとは から までぶん回すのだろう.

しかし が大きいのでこの方法では満点は取れない.

まず, が互いに素の場合は, である. このようになる の和 を求める.

に含まれる素因数をたとえば として, の倍数の集合を とすると, 包除原理を使って,

となる. に含まれる素因数の数は高々 個なので十分間に合う.

次に, となる の和を考える. これは とすると が互いに素の場合になるので, 同様に計算できる.

以下はすべての ( の約数) について同様の計算を行う.