这个问题要注意,验证素数函数要开方,这样可以使运行时间缩短一半,才不会超时。
#include <iostream> #include<string> #include<stdio.h> #include<algorithm> #include<math.h> using namespace std; #define max 200000 bool prime(int a) { int sqr=(int)sqrt(1.0*a); for (int i = 2; i <=sqr; i++)//必须要开方 if (a % i == 0) return false; return true; } int main() { int i, n,t,m; cin >> m >> n; int al[100100]; for (i = 2, t = 0; i < max; i++){ if (prime(i) == true) al[t++] = i; if(t>n)//算到n就行了 break; } for (i = m - 1,t=0; i < n; i++) { cout << al[i] ; t++; if ((i + 1) != n && t % 10 != 0) cout << " "; if (t % 10 == 0) cout << endl; } }