题目
代码
#include<stdio.h>
#include <iostream>
#include<algorithm>
#include <string.h>
#include<math.h>
#include<string>
#include<vector>
using namespace std;
int main(){
int m, n;
cin >> m >> n;
//if (m == 0 || n == 0)while (1);
int su[20000];
su[0] = 0; su[1] = 2;
int num = 2;
for (int i = 3;num<=10000; i += 2){
int used = 1;
if (i % 2 == 0)continue;
for (int j = 3; j <= sqrt(i); j += 2){
if (i%j == 0){
used = 0; break;
}
}
if (used)su[num++] = i;
}
for (int i = m; i <= n; i++){
cout << su[i];
if ((i - m) % 10 == 9)cout << endl;
else if (i != n)
cout << " ";
}
system("pause");
return 0;
}
计时:00:16:04.85
耗时
1.极限状况
测试点4出错,通过二分法测试
m=9993,n=10000
发现出来的是乱码
问题出在
for (int i = 3;num<=10000; i += 2){
注意要以su数组的数量为出循环的标志,而非i的大小
注意:写题时要考虑并测试极限的状况,再交