11.1 Prime
Use Prime to Find Prime
public static ArrayList<Integer> Prime(int max){
ArrayList<Integer> primeNumList=new ArrayList<Integer>();
primeNumList.add(2);
for (int i=3;i<max;i+=2){
if(isPrime(i, primeNumList)==true){
primeNumList.add(i);
}
}
return primeNumList;
}
public static boolean isPrime(int n, ArrayList<Integer> primeNumList) {
for (int primeNum: primeNumList) {
if (primeNum>Math.sqrt(n)) {
System.out.println();
return true;
}
if (n % primeNum == 0) {
System.out.print( " \t\tfalse\n");
return false;
}
}
return true;
}
Sieve
public static ArrayList<Integer> sieve2(int N) {
boolean[] isPrime = new boolean[N + 1];
for (int i = 0; i <= N; i++) {
isPrime[i] = true;
}
isPrime[0] = isPrime[1] = false;
for (int i = 2; i <= Math.sqrt(N); i++) {
if (isPrime[i]) {
for (int j = 2; i * j <= N; j++) {
isPrime[i * j] = false;
}
}
}
ArrayList<Integer> res = new ArrayList<Integer>();
int primes = 0;
for (int i = 2; i <= N; i++) {
if (isPrime[i]){
primes++;
res.add(i);
}
}
return res;
}