PAT 1013 数素数 (20 分)
格式错误调试了好久,仍不清楚
#include <iostream>
#include <set>
#include <cmath>
using namespace std;
bool is(const int &x, set<int> &s) {
bool ret = true;
for (set<int>::iterator i = s.begin(); i != s.end(); ++i) {
if ((*i) > sqrt(x)) break;//没有这句就会超时
if (x % (*i) == 0) {
ret = false;
break;
}
}
return ret;
}
int main() {
set<int> s;
int x, y, cnt = 0, i = 1, c = 0;
cin >> x >> y;
while (true) {
i++;
if (is(i, s)) {
s.insert(i);
cnt++;
}
if (cnt == y) break;
}
set<int>::iterator it = s.begin();
while (x > 1) {
++it;
x--;
}
for (; it != s.end(); ++it) {
c++;
/* 不知道这个错哪儿了(部分测试点格式错误)
if (c % 10 != 0 && c != y)
cout << *it << " ";
else if(c == y)
cout << *it << endl; */
if (c % 10 == 1)
cout << *it;
else {
cout << " " << *it;
}
if (c % 10 == 0 || c == y)
cout << endl;
}
return 0;
}