fork(1) download
  1. using System;
  2. using System.Diagnostics;
  3.  
  4. public class Test
  5. {
  6. static bool isPrime(int value)
  7. {
  8. for (int divisor = 7; divisor * divisor <= value; divisor += 30)
  9. {
  10. if (value % divisor == 0) { return false; }
  11. if (value % (divisor + 4) == 0) { return false; }
  12. if (value % (divisor + 6) == 0) { return false; }
  13. if (value % (divisor + 10) == 0) { return false; }
  14. if (value % (divisor + 12) == 0) { return false; }
  15. if (value % (divisor + 16) == 0) { return false; }
  16. if (value % (divisor + 22) == 0) { return false; }
  17. if (value % (divisor + 24) == 0) { return false; }
  18. }
  19. return true;
  20. }
  21.  
  22. public static int getNthPrime( int n )
  23. {
  24. if ( n == 1 ) return 2;
  25. if ( n == 2 ) return 3;
  26. if ( n == 3 ) return 5;
  27.  
  28. int prime = 7;
  29. int i = 3;
  30. while ( i < n )
  31. {
  32. if ( isPrime( prime ) ) { ++i; if ( i == n ) break; }
  33. prime += 4;
  34. if ( isPrime( prime ) ) { ++i; if ( i == n ) break; }
  35. prime += 2;
  36. if ( isPrime( prime ) ) { ++i; if ( i == n ) break; }
  37. prime += 4;
  38. if ( isPrime( prime ) ) { ++i; if ( i == n ) break; }
  39. prime += 2;
  40. if ( isPrime( prime ) ) { ++i; if ( i == n ) break; }
  41. prime += 4;
  42. if ( isPrime( prime ) ) { ++i; if ( i == n ) break; }
  43. prime += 6;
  44. if ( isPrime( prime ) ) { ++i; if ( i == n ) break; }
  45. prime += 2;
  46. if ( isPrime( prime ) ) { ++i; if ( i == n ) break; }
  47. prime += 6;
  48. }
  49. return prime;
  50. }
  51.  
  52. public static void Main()
  53. {
  54. Stopwatch sw = new Stopwatch();
  55. sw.Start();
  56. int prime = getNthPrime( 10001 );
  57. sw.Stop();
  58. Console.WriteLine( prime );
  59. Console.WriteLine( "Time to calculate in milliseconds : {0}",
  60. sw.ElapsedMilliseconds );
  61. }
  62. }
Success #stdin #stdout 0.07s 24048KB
stdin
Standard input is empty
stdout
104743
Time to calculate in milliseconds : 15