リニアサブふるいです

#include <ビット/ STDC ++ H.>
使用して名前空間STD;
CONST INT = MAXN 1E7;
BOOL VIS [MAXN];
プライム[MAXN]はint型、
int型F(int型N)// 1からnまでの素数の数をカウント
{
    INT CNT = 0;
    のmemset(VIS、falseに、はsizeof(VIS));
    のために(; I <= N-I ++がI = 2 INT)
    {
        IF(VIS [I]!)
            プライム[CNT ++] = I;
        のための(INT J = 0; J ++); J <CNT && Iはプライム[J] <= N *
        {
            VIS [I *はプライム[J] = 1;
            IF(I%のプライム[J] == 0)
                BREAK;
        }
    }
    戻りCNTを;
}
/ *場合I割り切れる素数[j]は
、私は[J + 1]この合成数は間違いなく素数である[j]が選別数を乗じてプライム*。
私はプライム[j]を含んでいるので、プライム[J ] [J + 1]は、プライムよりも小さくなっています。* /

INTのmain()
{
    int型N; CIN >> N。
    COUT << F(N)<< ENDL。
    0を返します。
}

おすすめ

転載: www.cnblogs.com/ljy08163268/p/11703770.html