問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
整数 N が素数であるかを判定する方法として、エラトステネスの篩という方法があります。
これは 0 以上 N 以下の全ての数について次の手順で素数判定を行う方法です。
1. X が素数のとき is_prime[X] が true となる配列 is_prime を用意し、
is_prime[0] , is_prime[1] を false , それ以外を true で初期化する。
2. 整数 i を 2 から順に N まで動かしながら次の操作を行う。
「is_prime[i] が true である場合、 is_prime[2×i], is_prime[3×i], ... , is_prime[k×i] を全て false にする(ただし k×i <= N )
N
N が素数である場合には "YES" を、素数でない場合は "NO" を 1 行で出力してください。
出力の末尾には改行を入れてください。
・ 1 ≦ N ≦ 1,000,000
2
YES
837
NO