这是一个素数的筛选,复杂度O(N)
欧拉筛
private static void Euler(int num) {
//定义一个check来表示是否被标记
boolean [] check = new boolean[1000];
//定义一个list来存储素数
ArrayList<Integer> primeList =new ArrayList<Integer>();
for (int i=2;i<num;i++){
//操作
if (!check[i]){
primeList.add(i);
}
//每一个数都去乘以当前素数list里面已经有的,如果超过num跳出,如果i%当前素数==0,可以被整除,跳出,
//其他情况打上标记
for (int j=0;j<primeList.size();j++){
if (i*primeList.get(j)>num){
break;
}
check[i*primeList.get(j)]=true;
if (i%primeList.get(j)==0){
break;
}
}
}
for (Integer integer : primeList) {
System.out.println(integer);
}
}