次の命題(☆)が成り立ちます。
☆: 任意の整数a, 正整数m, ϕ(m)≤bなる整数bについて、ab≡a(bmodϕ(m))+ϕ(m)(modm)が成り立つ。
ϕ(m)はO(m)、累乗はO(logM)などで計算することができ、本問はO(M)で解くことができました。
証明
まず、以下の補題を示します。
補題: ϕ(m)≤cなる整数cについて、ac≡ac+ϕ(m)(modm)が成り立つ。
1.補題
mの素因数について、m1をaと互いに素な成分の総積、m2をaと共通する素因数のみからなる成分の総積とする。
- m1について、オイラーの定理からaϕ(m1)≡1(modm1)。また、ϕ(m1)∣ϕ(m)より、aϕ(m)≡1(modm1)であるから、ac≡ac+ϕ(m)(modm1)
- m2について、m2の任意の素因数pに対してその指数をkとすると、ϕ(m)≥ϕ(pk)=pk(1−p1)≥2k−1≥kが成り立つため、ac≡ac+ϕ(m)≡0(modm2)
m1⊥m2,m1⋅m2=mなるm1、m2それぞれについてac+ϕ(m)−ac≡0であることが示されました。よって、crtからac≡ac+ϕ(m)(modm)です。
2.☆
bmodϕ(m)=r,⌊ϕ(m)b⌋=qとすると、補題から
ab=ar+qϕ(m)≡ar+(q−1)ϕ(m)≡⋯≡ar+ϕ(m)(modm)
ここで、r=bmodϕ(m)なので、ab≡a(bmodϕ(m))+ϕ(m)(modm)が示されました。