用当前的数去除后边的数
public static List<Integer> findPrime(int n) {
List<Integer> preResult = new ArrayList<Integer>();
List<Integer> result = new ArrayList<Integer>();
for (int i = 1; i <= n; i++) {
preResult.add(i);
}
int divisorInd = 1; // start from 2
while (divisorInd<n) {
int divisor = preResult.get(divisorInd);
for (int i = divisorInd +1; i < n; i++) {
if (preResult.get(i) == -1) {
continue;
}
if (preResult.get(i)%divisor == 0) {
preResult.set(i, -1);
}
}
divisorInd++;
for (int i = divisorInd; i < n; i++) {
if (preResult.get(i) != -1) {
divisorInd = i;
break;
}
}
}
for (Integer i : preResult) {
if (i != -1) {
result.add(i);
}
}
return result;
}