using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ProgDemo01 { class Program { static void Main(string[] args) { var primeNumberCounter1 = new PrimeNumberCounter(10000, 50000); primeNumberCounter1.StartCalculation += primeNumberCounter1_StartCalculation; primeNumberCounter1.FinishCalculation += primeNumberCounter1_FinishCalculation; primeNumberCounter1.RunCounter(); } private static void primeNumberCounter1_FinishCalculation(PrimeNumberCounter pm, EventArgs args) { Console.WriteLine("Обчислення завершено"); Console.WriteLine(pm.Counter); } private static void primeNumberCounter1_StartCalculation(PrimeNumberCounter pm, EventArgs args) { Console.WriteLine("Обчислення розпочато"); } } //Обчислити кількість простих чисел від [A;B] public class PrimeNumberCounter { public delegate void CalculationHandler (PrimeNumberCounter pm, EventArgs args); public event CalculationHandler StartCalculation; public event CalculationHandler FinishCalculation; public int StartNumber { get; set; } public int FinishNumber { get; set; } public int Counter { get; set; } public PrimeNumberCounter() { StartNumber = 0; FinishNumber = 0; Counter = 0; } public PrimeNumberCounter(int start, int finish) { StartNumber = start; FinishNumber = finish; Counter = 0; } public void RunCounter() { // StartCalculation if (StartCalculation != null) { StartCalculation(this, new EventArgs()); } for (int i = StartNumber; i < FinishNumber; i++) { if (isPrime(i)) Counter++; } // FinishCalculation if (FinishCalculation != null) { FinishCalculation(this, new EventArgs()); } } private bool isPrime(int number) { for (int i = 2; i < number-1; i++) { if ((number % i) == 0) return false; } return true; } } }