Я пишу эту java-программу, чтобы найти все простые числа до num, используя сито Eratosthenes, но когда я пытаюсь скомпилировать, он говорит, что я не могу использовать длинный var как индекс массива, и он ожидает, что int var на своем месте. Но я буду работать с большими числами, поэтому я не могу использовать int. Что я могу сделать?
import java.util.*;
import java.lang.*;
public class t3{
public static void main(String[] args){
long num = 100;
//declaring list and filling it with numbers
ArrayList<Long> numlist = new ArrayList<Long>();
for(long x=2 ; x<num ; x++){
numlist.add(new Long(x));
}
//sieve or eratosthenes
for(long x=0 ; x<Math.sqrt(num) ; x++){
for(long y=x+1 ; y<numlist.size() ; y++){
if(numlist[y]%numlist[x] == 0){
numlist.remove(y);
}
}
}
//print list
for(Object item : numlist){
System.out.println((Long)item);
}
}
}