问题描述:
所谓“筛选法”指的是“埃拉托色尼(Eratosthenes)筛法”。他是古希腊的著名数学家。他采取的方法是,在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数,找出一个非素数,就把它挖掉,最后剩下的就是素数。
具体做法如下:
<1> 先将1挖掉(因为1不是素数)。
<2> 用2去除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉。
<3> 用3去除它后面的各数,把3的倍数挖掉。
<4> 分别用4、5…各数作为除数去除这些数以后的各数。这个过程一直进行到在除数后面的数已全被挖掉为止。
import java.util.*;
import java.io.*;
@SuppressWarnings("unchecked")
public class Test
{public static void main(String[] args) throws Exception{int[] a = new int[101];int i,j;for(i = 1;i<101;i++){a[i]=1;}for(i = 2; i <101; i ++){for(j=i+i;j<101;){if(j%i == 0){a[j]=0;}j = j+i;}}for(i = 2; i < 101; i++){if(a[i]!= 0){System.out.println(i);}}}
}
运行结果如下:
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97