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