思想:先求出素数表,再判断,求素数表C++代码如下:
```
#include <iostream>
#define rep(i,n) for(int i=0; i<n; i++)
#define N 100000
#define ROOT_N 317
using namespace std;
bool is_prime[N+1];
void sieve(){
rep(i, N) is_prime[i] = true;
is_prime[1] = false;
for(int i = 2; i <= ROOT_N; i++){
if(not is_prime[i]) continue;
int j = i + i;
while(j <= N){
is_prime[j] = false;
j += i;
}
}
}
```
#include <iostream>
#define rep(i,n) for(int i=0; i<n; i++)
#define N 100000
#define ROOT_N 317
using namespace std;
bool is_prime[N+1];
void sieve(){
rep(i, N) is_prime[i] = true;
is_prime[1] = false;
for(int i = 2; i <= ROOT_N; i++){
if(not is_prime[i]) continue;
int j = i + i;
while(j <= N){
is_prime[j] = false;
j += i;
}
}
}