PAT B1013 数素数 C++解题

题目:
令 P​i​​ 表示第 i 个素数。现任给两个正整数 M≤N≤10​4​​,请输出 P​M​​ 到 P​N​​ 的全部素数。
来源《算法笔记》
代码以下算法

#include <stdio.h>
const int maxn = 1000001;
int prime[maxn], num = 0;
bool p[maxn] = {0};
void Find_Prime(int n)
{
    for (int i = 2; i < maxn; i++)
    {
        if (p[i] == false)
        {
            prime[num++] = i;
            if (num >= n)//由于只要N个素数 后面的就不须要了。
                break;
            for (int j = i + i; j < maxn; j += i)
            {
                p[j] = true;
            }
        }
    }
}
int main()
{
    int m, n, count = 0;
    scanf("%d%d", &m, &n);
    Find_Prime(n);
    for (int i = m; i <= n; i++)
    {
        printf("%d", prime[i - 1]);
        count++;
        if (count % 10 != 0 && i < n)
            printf(" ");
        else
        {
            printf("\n");
        }
    }
    return 0;
}
相关文章
相关标签/搜索