エリクセンコアスクリーニング方法であって、素数の倍数が素数ではありません。
その後、我々は、テーブルと素数としてマークされた01のすべての数の加算を作成、我々は2が最も小さい素数であると判断することができ、そのような戦略を実装する、我々は、すべての数(非合金としてマーク2の範囲内に因子をスクリーニングします素数)、その後、()非プライムとしてマークプライム倍数を話す最小の素数テーブル、同じ戦略を削除します。下のグラフは、このような完璧なアルゴリズムを示しています
画面エリクセンのみの複雑O比較的速いとみなす(nloglogn)。データの量があまり大きくない場合には複雑さが線形であるとして、それは見ることができます。
const int型 MAX_NUM = 10000 + 10 。 BOOL is_prime [MAX_NUM]。 ボイド prime_table(INT MAXN) { memsetの(is_prime、1、はsizeof (is_prime))。 is_prime [ 0 ] = is_primeは、[ 1 ] = 偽。 以下のために(int型 I = 2 ; I <= MAXN; iは++ ) { 場合(is_prime [I]) { ため(INT J = 2 * I; J <= MAXN; J + = I) is_prime [J] = 偽; } } }