- using System; 
- using System.Diagnostics; 
-   
- public class Test 
- { 
- 	static bool isPrime(int value) 
- 	{ 
- 	    for (int divisor = 7; divisor * divisor <= value; divisor += 30) 
- 	    { 
- 	        if (value % divisor == 0) { return false; } 
- 	        if (value % (divisor + 4) == 0) { return false; } 
- 	        if (value % (divisor + 6) == 0) { return false; } 
- 	        if (value % (divisor + 10) == 0) { return false; } 
- 	        if (value % (divisor + 12) == 0) { return false; } 
- 	        if (value % (divisor + 16) == 0) { return false; } 
- 	        if (value % (divisor + 22) == 0) { return false; } 
- 	        if (value % (divisor + 24) == 0) { return false; } 
- 	    } 
- 	    return true; 
- 	} 
-   
- 	public static int getNthPrime( int n ) 
- 	{ 
- 		if ( n == 1 ) return 2; 
- 		if ( n == 2 ) return 3; 
- 		if ( n == 3 ) return 5; 
-   
- 		int prime = 7; 
- 		int i = 3; 
- 		while ( i < n ) 
- 		{ 
- 			if ( isPrime( prime ) ) { ++i; if ( i == n ) break; } 
- 			prime += 4; 
- 			if ( isPrime( prime ) ) { ++i; if ( i == n ) break; } 
- 			prime += 2; 
- 			if ( isPrime( prime ) ) { ++i; if ( i == n ) break; } 
- 			prime += 4; 
- 			if ( isPrime( prime ) ) { ++i; if ( i == n ) break; } 
- 			prime += 2; 
- 			if ( isPrime( prime ) ) { ++i; if ( i == n ) break; } 
- 			prime += 4; 
- 			if ( isPrime( prime ) ) { ++i; if ( i == n ) break; } 
- 			prime += 6; 
- 			if ( isPrime( prime ) ) { ++i; if ( i == n ) break; } 
- 			prime += 2; 
- 			if ( isPrime( prime ) ) { ++i; if ( i == n ) break; } 
- 			prime += 6; 
- 		} 
- 		return prime; 
- 	} 
-   
- 	public static void Main() 
- 	{ 
-         Stopwatch sw = new Stopwatch(); 
-         sw.Start(); 
-         int prime = getNthPrime( 10001 ); 
-         sw.Stop(); 
- 		Console.WriteLine( prime ); 
-         Console.WriteLine( "Time to calculate in milliseconds : {0}", 
-                             sw.ElapsedMilliseconds ); 
- 	} 
- }