private static Task[] Task2(ConcurrentDictionary <int, long> testedArray) { var testedThreadArray = new List <Task>(); ThreadPool.SetMaxThreads(testedArray.Count / 10, testedArray.Count / 10); var rng = new Random(); var indexes = new HashSet <int>(); while (indexes.Count < testedArray.Count) { indexes.Add(rng.Next(0, testedArray.Count)); } for (var i = 0; i < testedArray.Count; i++) { var i1 = i; var subTask = new Task((() => { if (!testedArray.TryRemove(indexes.ToArray()[i1], out var number)) { return; } Console.WriteLine(PrimeTester.IsPrime(number) ? $"{number} is prime" : $"{number} isn't prime"); })); subTask.Start(); testedThreadArray.Add(subTask); } return(testedThreadArray.ToArray()); }
public void sPrime_ReturnsTrue_InputIsPrime() { // Arrange var primeNumber = 3; // Act var result = PrimeTester.IsPrime(primeNumber); // Assert Assert.True(result); }
public void IsPrime_ReturnsFalse_InputIsComposite() { // Arrange var compositeNumber = 9; // Act var result = PrimeTester.IsPrime(compositeNumber); // Assert Assert.False(result); }
private static Task[] Task1(ConcurrentDictionary <int, long> testedArray) { var parts = testedArray.Count / 10; var splitedLists = SplitList(testedArray.ToList(), parts); return(splitedLists.Select(partedList => Task.Factory.StartNew((() => { foreach (var(_, value) in partedList) { Console.WriteLine(PrimeTester.IsPrime(value) ? $"{value} is prime" : $"{value} isn't prime"); } }))).ToArray()); }
private static void Main() { var stopwatch = new Stopwatch(); stopwatch.Start(); var formedArray = PrimeTester.FormArray(0, 10); Task.WaitAll(Task1(formedArray)); stopwatch.Stop(); Console.WriteLine($"\nTask 1 taken {stopwatch.ElapsedMilliseconds} ms\n"); stopwatch.Start(); formedArray = PrimeTester.FormArray(0, 10); Task.WaitAll(Task2(formedArray)); stopwatch.Stop(); Console.WriteLine($"\nTask 2 taken {stopwatch.ElapsedMilliseconds} ms\n"); }
static void Main(string[] args) { int iterations = 1000; BigInteger[] testPrimes = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 104549, 104551, 104561, 104579, 104593, 104597, 104623, 104639, 104651, 104659, 104677, 104681, 104683, 104693, 104701, 104707, 104711, 104717, 104723, 104729 }; long[] compositeNumbers = { 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30, 32, 33, 34, 35, 36, 38, 39, 40, 42, 44, 45, 46, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 60, 62, 63, 64, 65, 66, 68, 69, 70, 72, 74, 75, 76, 77, 78, 80, 81, 82, 84, 85, 86, 87, 88, 90, 91, 92, 93, 94, 95, 96, 98, 99, 100, 102, 104, 105, 106, 108, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 128, 129, 130, 132, 133, 134, 135, 136, 138, 140, 141, 142, 143, 144, 145, 146, 147, 148, 150 }; Console.WriteLine("Test primes:"); Parallel.ForEach(testPrimes, testPrime => { var primeChecker = new PrimeTester(); Console.WriteLine( $"Is {testPrime} is a prime: {primeChecker.CheckPrimeBySolovayStrassenTest(testPrime, iterations)}"); }); Console.WriteLine("Test composite number:"); Parallel.ForEach(compositeNumbers, compositeNumber => { var primeChecker = new PrimeTester(); Console.WriteLine( $"Is {compositeNumber} is a composite number: {!primeChecker.CheckPrimeBySolovayStrassenTest(compositeNumber, iterations)}"); Console.Out.Flush(); }); Console.ReadLine(); }
public void Prime_Smoke_Test() { Assert.IsTrue(PrimeTester.IsPrime(11)); Assert.IsFalse(PrimeTester.IsPrime(50)); Assert.IsTrue(PrimeTester.IsPrime(101)); }