Question

link

Find 10001st Prime Number

Analysis

Use Sieve of Eratosthenes, or 埃氏筛.

Code

private static final int INDEX = 10001;
private static final int LIMIT = 1000000;

private static int get10001stPrime() {
	boolean[] sieveArray = new boolean[LIMIT];
	int primeCount = 0;
	int currentNum = 2;
	while (primeCount < INDEX) {
		if (!sieveArray[currentNum]) {
			primeCount++;
			for (int i = currentNum; i < LIMIT; i += currentNum) {
				sieveArray[i] = true;
			}
		}
		currentNum++;
	}
	return currentNum - 1;
}