2 条题解

  • 1
    @ 2025-4-10 22:59:21

    上线性筛直接硬冲即可。

    #include <bits/stdc++.h>
    using namespace std;
    int pr[17000012], cnt = 0;
    bitset<300000012> ppr;
    int up;
    int get()
    {
        ppr[1] = true;
        for (int i = 2; i <= up; i++)
        {
            if (!ppr[i]) cnt++, pr[cnt] = i;
            for (int j = 1; j <= cnt; j++)
            {
                if (i * pr[j] > up) break;
                ppr[i * pr[j]] = true;
                if (i % pr[j] == 0) break;
            }
        }
        return cnt;
    }
    int main()
    {
        int l, r;
        cin >> l >> r;
        up = r;
        get();
        int ans = 0;
        for (int i = 1; i <= cnt; i++)
            if ((pr[i] & 3) == 1 && pr[i] >= l && pr[i] <= r) ans++;
        if (l <= 2 && r >= 2) ans++;
        cout << ans << endl;
        return 0;
    }
    

    信息

    ID
    100
    时间
    3000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    10
    已通过
    2
    上传者