public override List<int> ProcessNumbers(int fromNumber, int toNumber) { List<int> results = new List<int>(); double factor = 100 / toNumber - fromNumber; for (int i = fromNumber; i < toNumber; i++) { host.ReportProgress((int)(i * factor)); results.Add(i); } host.ReportProgress(100); return results; }
public override List <int> ProcessNumbers(int fromNumber, int toNumber) { List <int> results = new List <int>(); int[] list = new int[toNumber - fromNumber]; double factor = 100 / toNumber - fromNumber; // Create an array containing all integers between the two specified numbers. for (int i = 0; i < list.Length; i++) { list[i] = fromNumber; fromNumber += 1; } //find out the module for each item in list, divided by each d, where //d is < or == to sqrt(to) //mark composite with 1, and primes with 0 in mark array int maxDiv = (int)Math.Floor(Math.Sqrt(toNumber)); int[] mark = new int[list.Length]; for (int i = 0; i < list.Length; i++) { for (int j = 2; j <= maxDiv; j++) { if ((list[i] != j) && (list[i] % j == 0)) { mark[i] = 1; } } host.ReportProgress((int)(i * factor)); } //get the marked primes from original array for (int i = 0; i < mark.Length; i++) { if (mark[i] == 0) { results.Add(list[i]); } } host.ReportProgress(100); return(results); }