問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
整数 N が素数であるかを高確率で判定する方法の 1 つとしてフェルマーテストがあります。
整数 N をフェルマーテストで素数判定するときの手順は次の通りです。
1. a を 2 から N-1 までの数からランダムに選ぶ。
2. N が a で割り切れる場合は N は素数でないと判定する。
3. a^(N-1) を N で割ったあまりが 1 ならば N は素数、1 でない場合は素数でないと判定する。
ヒント
1. fermat に a を掛ける。
2. fermat に 「fermat を N で割った余り」 を代入する。
N
フェルマーテストの結果、N が素数であると判定された場合は "YES" を、そうでない場合は "NO" を 1 行で出力してください。
出力の末尾には改行を入れてください。
・ 3 ≦ N ≦ 100,000
3
YES
837
NO