一般素数判断法
bool is_prime(int n) {
if (n == 1) return false;
int sqr = (int)(sqrt(1.0*n));//因子最多到根号n,
for (int i = 2; i <= sqr; i++) {
if (n%i == 0) return false;
}
return true;
}
厄拉多塞素数筛选
时间复杂度nlogn
比较高效的素数判断法,适用于n很大的时候
//厄拉多塞素数筛选. Eratosthenes
#include <bits/stdc++.h>
using namespace std;
const int maxn = 8000000 + 10;
int is_prime[maxn];
void get_prime(int n) {
for (int i = 2; i <= n; i++) {
is_prime[i] = 1;
}
for (int i = 2; i*i <= n; i++) {
if (is_prime[i]) {
for (int j = i*i; j <= n; j += i) {
is_prime[j] = 0;
}
}
}
}
int main() {
int n;
scanf("%d", &n);
get_prime(n);
return 0;
}