まず, フェルマーの小定理から 間に の倍数が含まれている場合は最小値は になる. 以後 は の剰余を取っておく.
が小さいときは愚直にすべて試す.
が大きいときは, 入力がランダムなので答えも小さい可能性が高い. よって, 小さい から順に
となる が 間に含まれているかどうかを調べる.
このような を求める方法として, Baby-step Giant-step アルゴリズムを用いる.
これは とおき, となる () を求めるやり方である.
から となる. をすべての について求めてソートしておき, がその中に含まれるかどうかを二分探索で求める.