Project Euler 132

Problem 132

2, 3, 5以外の素数を列挙します。A(p)(すなわちB(p))が109を割り切る素数pを列挙すればよいです。

109を割り切るかどうかの判定は比較的簡単です。まず、p - 1の2と5の成分を取り出します。例えばp = 1920001として、p - 1 = 210 * 3 * 54だから、2は10個、5は4個です。9との小さい方を取って、e = 29 * 54が、

10e ≡ 1(mod p)

を満たせば、B(p)はeの約数だから109を割り切ることになります。逆も明らかです。
40個で0.09s、70個で36sでした。