题目:
寻找10000以内的质数。注意时间复杂度。
代码:
方法一——:
vector<int> findPrime_1(int n) {
vector<int> prime;
for (int i = 2; i <= floor(sqrt(n)) + 1; i++) {
for (int j = i; j <= n/i; j++) {
if (res[i * j] != 1)res[i * j] = 1;
}
}
for (int i = 2; i <= n; i++) {
if (res[i] != 1)prime.push_back(i);
}
return prime;
}
方法二——:
vector<int> findPrime_2(int n) {
vector<int> prime;
//vector<bool> visit(n + 1, false);
for (int i = 2; i <= n; i++) {
if (!visit[i]) {
prime.push_back(i);
}
for (int j = 0; j < prime.size()&&i*prime[j]<=n; j++) {
visit[i * prime[j]] = 1;
if (i % prime[j] == 0)break;
}
}
return prime;
}