package algorithm;
import java.util.ArrayList;
/**
* 实现“挨拉托色尼的筛子”
* @author mike
*
*/
public class Sieve {
/**
* 输入:一个正整数,n>2
* 输出:包含所有小于等于n的质数的数组列表
* @param n
* @return
*/
public static ArrayList<Integer> sieve(int n) {
int[] A=new int[n+1];
ArrayList<Integer> result=new ArrayList<>();
for (int i=2;i<=n;i++) {
A[i]=i;
}
for (int i = 2; i < (int )Math.sqrt(n); i++) {
if (A[i]!=0) {
int j=i*i;
while (j<=n) {
A[j]=0;
j=j+i;
}
}
}
for (int i = 2; i <= n; i++) {
if (A[i]!=0) {
result.add(A[i]);
}
}
return result;
}
public static void main(String[] args) {
ArrayList<Integer> result=sieve(12);
System.out.println("result的大小:"+result.size());
for (int i = 0; i < result.size(); i++) {
if (i%5==0) {
System.out.println();
}
System.out.print(result.get(i)+"\t");
}
}
}