Skip to content

1013 数素数

Statement

Metadata

  • 作者: CHEN, Yue
  • 单位: 浙江大学
  • 代码长度限制: 16 KB
  • 时间限制: 200 ms
  • 内存限制: 64 MB

P_i 表示第 i 个素数。现任给两个正整数 M \le N \le 10^4,请输出 P_MP_N 的所有素数。

输入格式

输入在一行中给出 MN,其间以空格分隔。

输出格式

输出从 P_MP_N 的所有素数,每 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

Solution

#include <cmath>
#include <iostream>
#include <map>
#include <string>
using namespace std;
#define MAXN 100000
int isprime(int x) {
    int flag;
    int n, i;
    if (x <= 1)
        flag = 0;
    else if (x == 2 || x == 3)
        flag = 1;
    else if (x % 2 == 0)
        flag = 0;
    else {
        i = (int)sqrt((double)x);
        for (n = 3; n <= i; n += 2) {
            if (x % n == 0) {
                flag = 0;
                break;
            } else {
                flag = 1;
            }
        }
    }
    return flag;
}
int main() {
    int m, n, i;
    map<int, int> q;
    int j = 1;
    cin >> m >> n;
    for (i = 1; i <= 110000; i++) {
        if (isprime(i)) {
            q[j++] = i;
        }
    }
    j = 1;
    for (i = m; i < n; i++) {
        if (j % 10) {
            cout << q[i] << " ";
        } else {
            cout << q[i] << endl;
        }
        j++;
    }
    cout << q[i] << endl;
}

Last update: May 4, 2022
Back to top