andruhovski icon

EventDemo

andruhovski | PRO | 10/05/18 07:43:27 AM UTC | 0 ⭐ | 965 👁️ | Never ⏰ | []
C# |

2.6 KB

|

None

|

0 👍

/

0 👎

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;
        }
    }
 
}

Comments