思想:先求出素数表,再判断,求素数表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;
}
}
}
本文介绍了一种使用C++实现的素数筛法,通过该算法可以快速找出一定范围内的所有素数。首先初始化一个布尔类型的数组,标记每个数为可能是素数,然后从2开始遍历到根号n,将每个素数的倍数标记为合数。
2870

被折叠的 条评论
为什么被折叠?



