이건 제곱근과는 달리 값의 범위 안에서 소수를 찾는다. 배열에 원하는 수 만큼 담아서 2를 만나면 그 뒤 2의 배수는 다 소수가 아니고, 그 다음에 3을 만나면 소수처리하고 그 뒤 3의 배수는 다 소수가 아니고… 이런식으로 구하려는 범위의 제곱근까지만 검사하면된다!!!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14
publicstaticfinalint MAX = 100000; boolean[] findPrime(){ boolean isPrime = newboolean[MAX+1]; for(int i = 2 ; i <= MAX; i++){ isPrime[i] = true; } for(int i = 2 ; i <= Math.sqrt(MAX) ; i++){ if(isPrime[j] == false) continue; for(int j = i * 2 ; j <= MAX ; j+=i){ isPrime[j] = false; } } return isPrime; }