.NET Array Dictionary List String 2D Async DataTable Dates DateTime Enum File For Foreach Format IEnumerable If IndexOf Lambda Parse Path Process Property Regex Replace Row Sort Split Static StringBuilder Substring Switch Tuple Window

**Note:**It contains several optimizations that improve the performance of the computation.

**Next:**This program shows the results on the primes between 0 and 100, and between 10000 and 10100, proving correctness.

Program.cs, C# program that tests IsPrimeusing System; class Program { static void Main() {// // Write prime numbers between 0 and 100. //Console.WriteLine("--- Primes between 0 and 100 ---"); for (int i = 0; i < 100; i++) { bool prime = PrimeTool.IsPrime(i); if (prime) { Console.Write("Prime: "); Console.WriteLine(i); } }// // Write prime numbers between 10000 and 10100 //Console.WriteLine("--- Primes between 10000 and 10100 ---"); for (int i = 10000; i < 10100; i++) { if (PrimeTool.IsPrime(i)) { Console.Write("Prime: "); Console.WriteLine(i); } } } }Class that contains IsPrime: PrimeTool.cs, C#using System; public static class PrimeTool { public static boolIsPrime(int candidate) {// Test whether the parameter is a prime number.if ((candidate & 1) == 0) { if (candidate == 2) { return true; } else { return false; } }// Note: // ... This version was changed to test the square. // ... Original version tested against the square root. // ... Also we exclude 1 at the end.for (int i = 3; (i * i) <= candidate; i += 2) { if ((candidate % i) == 0) { return false; } } return candidate != 1; } }Output--- Primes between 0 and 100 --- Prime: 2 Prime: 3 Prime: 5 Prime: 7 Prime: 11 Prime: 13 Prime: 17 Prime: 19 Prime: 23 Prime: 29 Prime: 31 Prime: 37 Prime: 41 Prime: 43 Prime: 47 Prime: 53 Prime: 59 Prime: 61 Prime: 67 Prime: 71 Prime: 73 Prime: 79 Prime: 83 Prime: 89 Prime: 97 --- Primes between 10000 and 10100 --- Prime: 10007 Prime: 10009 Prime: 10037 Prime: 10039 Prime: 10061 Prime: 10067 Prime: 10069 Prime: 10079 Prime: 10091 Prime: 10093 Prime: 10099

**IL:**The "and" instruction computes the bitwise "AND" and pushes the result onto the evaluation stack.

**Also:**Please notice that the method is no longer the same version found in the .NET Framework.

**Tip:**You can check the first 100 prime numbers in many places. One option is prime-numbers.org.

**Note:**These integers are not the first N prime numbers, but a selection of the first N prime numbers.

Class that shows GetPrime method from HashHelpers: C#public static class PrimeToolHash { static int[] primes; static PrimeToolHash() {// // Initialize array of first primes before methods are called. //primes = new int[] { 3, 7, 11, 17, 23, 29, 37, 47, 59, 71, 89, 107, 131, 163, 197, 239, 293, 353, 431, 521, 631, 761, 919, 1103, 1327, 1597, 1931, 2333, 2801, 3371, 4049, 4861, 5839, 7013, 8419, 10103, 12143, 14591, 17519, 21023, 25229, 30293, 36353, 43627, 52361, 62851, 75431, 90523, 108631, 130363, 156437, 187751, 225307, 270371, 324449, 389357, 467237, 560689, 672827, 807403, 968897, 1162687, 1395263, 1674319, 2009191, 2411033, 2893249, 3471899, 4166287, 4999559, 5999471, 7199369 }; } public static intGetPrime(int min) {// // Get the first hashtable prime number // ... that is equal to or greater than the parameter. //for (int i = 0; i < primes.Length; i++) { int num2 = primes[i]; if (num2 >= min) { return num2; } } for (int j = min | 1; j < 2147483647; j += 2) { if (PrimeTool.IsPrime(j)) { return j; } } return min; } }

Dictionary Initialize method: C#private void Initialize(int capacity) { int prime = HashHelpers.GetPrime(capacity); this.buckets = new int[prime];// ... // ...}

**Further:**We saw how these methods are applied in the Dictionary class, making them a part of every program that uses Dictionary.