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;
}
相關文章
相關標籤/搜索