算法题1.厄拉多塞筛法求质数

厄拉多塞筛法求质数

0~N 范围内 如果 此数为质数 则其倍数一定不是质数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  public int (int n) {

int[] a=new int[n];
// 前两个数 0 1 不需要计算从2 开始
for(int i=2;i<n;i++){

// 循环如果他是质数 则它的倍数都不是质数

if(a[i]==0){

for(int j=2;j*i<n;j++){
a[j*i]=1;
}
}
}

// 获取数组中是质数的标记
int c=0;
for(int i=2;i<n;i++){
if(a[i]==0){
c++;
}
}
return c;
}