/// <summary> Реализация алгоритма Евклида
        /// </summary>
        /// Для вычесления НОД используем цикл while
        /// в цикле задаем условие (b не равно 0)
        /// производим математические вычисления
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns>
        /// Наибольший Общий Делитель (НОД)
        /// </returns>
        ///

        public gcd GetGCD(gcd a, gcd b) // НОД 2-ух целых чисел
        {
            while (b != 0)
            {
                b = a % (a = b);
            }
            return(a);
        }
        /// <summary>
        /// Алгоритм Евклида с выходным параметром
        /// </summary>
        /// В данном алгоритме принимается выходной параметр
        /// Выходным параметром является время потраченое на решение.
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <param name="euklidTime"></param>
        /// <returns>
        /// Наибольший Общий Делитель (НОД)
        /// Время затраченное на решение данного алгоритма
        /// </returns>
        public gcd GetGCD(gcd a, gcd b, out long euklidTime) // НОД 2-ух целых чисел с выходным параметром времени.
        {
            Stopwatch st = new Stopwatch();

            st.Start();
            while (b != 0)
            {
                b = a % (a = b);
            }
            st.Stop();
            euklidTime = st.ElapsedMilliseconds;
            return(a);
        }
 public gcd GetGCD(gcd a, gcd b, gcd c, gcd d, gcd e) // НОД 5-ти целых чисел
 {
     return(GetGCD(GetGCD(GetGCD(GetGCD(a, b), c), d), e));
 }
 public gcd GetGCD(gcd a, gcd b, gcd c, gcd d) // НОД 4-ех целых чисел
 {
     return(GetGCD(GetGCD(GetGCD(a, b), c), d));
 }
 public gcd GetGCD(gcd a, gcd b, gcd c) // НОД 3-ех целых чисел
 {
     return(GetGCD(GetGCD(a, b), c));
 }