美文网首页
1013数素数

1013数素数

作者: advanced_slowly | 来源:发表于2019-09-29 17:56 被阅读0次

问题描述:
令 Pi表示第 i 个素数。现任给两个正整数 M≤N≤10^4,请输出 P
​M到 PN的所有素数。

输入格式:
输入在一行中给出 M 和 N,其间以空格分隔。

输出格式:
输出从 PM到 PN的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。

输入样例:
5 27
输出样例:
11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103

我的实现如下:

#include <iostream>

using namespace std;

int main()
{
    int M, N;
    cin >> M >> N;
    if (M > 10000 || N > 10000 || M <= 0 || N <= 0)
    {
        return -1;
    }
    int circleCount = 0;    //素数计数
    int numCount = 0;       //从第M个素数开始计数
    for (int i = 2 ; i <= 10000 ; i++)
    {
        int j;
        for (j = 2 ; j < i ; j++)
        {
            if ((i % j) == 0)
            {
                break;
            }
        }
        if (j == i)
        {
            circleCount++;
            if (circleCount == N)
            {
                cout << i;
                break;
            }
            else if (circleCount >= M && circleCount < N)
            {

                cout << i;
                numCount++;
                if ((numCount % 10) == 0)
                {
                    cout << endl;
                }
                else
                {
                    cout << " ";
                }
            }
        }
    }
    return 0;
}

或者呢,将2到10000的素数都存储进一个大数组种,然后遍历第M个到第N个元素。

#include <iostream>

using namespace std;
int main()
{
    int M, N;
    cin >> M >> N;
    int results[4088] = {0};
    int circleCount = 0;
    for (int i = 2 ; i <= 10000 ; i++)
    {
        int j;
        for (j = 2 ; j < i ; j++)
        {
            if ((i % j) == 0)
            {
                break;
            }
        }
        if (i == j)
        {
            results[circleCount] = i;
            circleCount++;
        }
    }
    for (int i = M - 1; i <= N - 1 ; i++)
    {
        cout << results[i];
        if ((i + 1 - M + 1) % 10 == 0 || i == N - 1)
        {
            cout << endl;
        }
        else
        {
            cout << " ";
        }
    }
    return 0;
}

相关文章

  • PAT-B-1013. 数素数(Java)

    1013. 数素数 (20)

  • 1013数素数

    问题描述:令 Pi表示第 i 个素数。现任给两个正整数 M≤N≤10^4,请输出 P​M到 PN的所有素数。 输入...

  • 1013 数素数

    令 P​i表示第 i 个素数。现任给两个正整数 M≤N≤10​^4,请输出 P​M到 P​N的所有素数。 输入格式...

  • PAT-B 1013 数素数(C语言)

    题目 链接:PAT (Basic Level) Practice 1013 数素数 令表示第 i 个素数。现任给两...

  • 1013.数素数

    题目描述 令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出PM到PN的所有素数。 输入...

  • 1013 数素数(java)

  • 1013

    //1013 数素数 (20)(20 分)//令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请...

  • PAT Basic 1013 数素数

    题目 令Pi表示第 i 个素数。现任给两个正整数 M≤N≤10^4,请输出PM到PN的所有素数。 输入格式:输入在...

  • 1013. 数素数 (20)

    题目: 令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。 输入格式:...

  • 1013. 数素数 (20)

    令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。 输入格式: 输入在...

网友评论

      本文标题:1013数素数

      本文链接:https://www.haomeiwen.com/subject/rhzyyctx.html