Wednesday, July 19, 2017

PAT (Basic Level) Practise (中文) 1013

1013. 数素数 (20)

时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到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

//C++ Program
#include <iostream>
#include <cmath>
using namespace std;

bool is_prime(int n);

int main(void) {

 int M, N, num = 0;
 cin >> M >> N;

 for (int i = 2; num < N; ++i) {
  if (is_prime(i)) {
   ++num;
   if (num >= M) {
    cout << i;
    if ((num - M + 1) % 10 == 0) {
     cout << endl;
    } else if (num < N) {
     cout << " ";
    }
    else {
     cout << endl;
    }
   }
  }
  if (i > 2) {
   ++i;
  }
 }

 return 0;
}

bool is_prime(int n) {

 for (int i = 2; i <= sqrt(n); ++i) {
  if (n%i == 0) {
   return false;
  }
 }
 return true;

}

No comments:

Post a Comment