算法刷题记录:素数分布

题目链接

https://ac.nowcoder.com/acm/contest/19306/1014

解题思路

第一次听说素数分布这个东西,所以想记下来。
素数分布函数π(n)表示小于或等于n的素数的数目。例如π(10)=4(2,3,5,7是素数)。

AC代码

#include <iostream>
#include <cstring>

using namespace std;

const int N = 10000;

int T, n;
int p[N], st[N];

int main()
{
    cin >> T;
    while (T -- )
    {
        cin >> n;
        int cnt = 0, ans = 0;
        memset(st, 0, sizeof st);
        for (int i = 2; i <= n; ++ i)
        {
            if (!st[i])
            {
                p[cnt ++ ] = i;
                for (int j = i + i; j <= n; j += i)
                    st[j] = true;
            }
        }

        for (int i = 2; i <= n; ++ i)
            if (!st[i]) ++ ans;

        cout << ans << endl;
    }
    
    return 0;
}
posted @ 2023-05-23 16:15  想个昵称好难ABCD  阅读(59)  评论(0编辑  收藏  举报