public void EuclideanAlg_NegativeDigits_CorrectGCD() { //Act var target = GCDFinder.EuclideanAlg(_digitOne * -1, _digitTwo * -1); //Assert Assert.AreEqual(_expectedGCD, target); }
public void EuclideanAlg_TwoNormalDigits_CorrectGCD() { //Act var target = GCDFinder.EuclideanAlg(_digitOne, _digitTwo); //Assert Assert.AreEqual(_expectedGCD, target); }
public void BinaryEuclideanAlg_LotsOfDigits_CorrectGCD() { //Arrange var otherDigits = new decimal[] { 570, 36 }; //Act var target = GCDFinder.EuclideanAlg(_digitOne, _digitTwo, otherDigits); //Assert Assert.AreEqual(_expectedGCD, target); }
static void Main(string[] args) { //Содержит числа введенные пользователем List <decimal> digits = new List <decimal>(); //Приглашение пользователя к вводу чисел Checker.UserInputVerifiable("Пожалуйста, введите числа для поиска НОД, разделяя их символом ';'", (string input) => { string[] inputSplited = input.Split(';', StringSplitOptions.RemoveEmptyEntries); if (inputSplited.Length < 2) { Checker.ErrorWriteLine("Слишком мало чисел. Пожалуйста введит по крайне мере 2 числа."); return(false); } foreach (var digitStr in inputSplited) { if (!decimal.TryParse(digitStr, out var digit)) { Checker.ErrorWriteLine($"Не удалось распознать число.\nПозиция: {input.IndexOf(digitStr) + 1}\nВвод: {digitStr}"); digits.Clear(); return(false); } digits.Add(digit); } return(true); }); //Первое введенное число var digitOne = digits[0]; digits.RemoveAt(0); //Второе введенное число var digitTwo = digits[0]; digits.RemoveAt(0); //Время затрачиваемое при работе алгоритма Евклида TimeSpan euclideanTime; //Время затрачиваемое при работе бинарного алгоритма Евклида TimeSpan binaryEuclideanTime; var euclideanGCD = GCDFinder.EuclideanAlg(digitOne, digitTwo, out euclideanTime, digits.ToArray()); var binaryEuclideanGCD = GCDFinder.BinaryEuclideanAlg(digitOne, digitTwo, out binaryEuclideanTime, digits.ToArray()); Console.WriteLine("{0,-20}\t{1,-20}\t{2}", "Алгоритм", "НОД", "Время"); Console.WriteLine("{0,-20}\t{1,-20}\t{2} мс", "Евклид", euclideanGCD, euclideanTime.TotalMilliseconds); Console.WriteLine("{0,-20}\t{1,-20}\t{2} мс", "Стейна", binaryEuclideanGCD, binaryEuclideanTime.TotalMilliseconds); Console.WriteLine("Разница по времени: {0} мс", Math.Abs(euclideanTime.TotalMilliseconds - binaryEuclideanTime.TotalMilliseconds)); }