Ejemplo n.º 1
0
        /// <summary>
        /// Умножение натуральных чисел
        /// </summary>
        /// <param name="A">Первый множитель</param>
        /// <param name="B">Второй мнжитель</param>
        /// <returns>Перемноженные числа</returns>
        public static Natural Run(Natural A, Natural B)
        {
            Natural ret = new Natural(new int[A.Clear().Length + B.Clear().Length]);

            for (int i = 0; i < B.Length; i++)
            {
                ret = N_4.Run(ret, N_7.Run(N_6.Run(A, B[i]), i));
            }
            return(ret.Clear());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Вычисление частного от деления
        /// </summary>
        /// <param name="num1">Первое число, которое поступает на обработку</param>
        /// <param name="num2">Второе число, которое поступает на обработку</param>
        /// <returns>Будет возвращено частное</returns>
        public static Natural Run(Natural num1, Natural num2)
        {
            num1.Clear(); num2.Clear();
            if (N_1.Run(num1, num2) == 2 || N_2.Run(num2))
            {
                throw new Exception();                        // если второе число больше, то ошибка
            }
            Natural Result     = N_10.Run(num1, num2);        // вычисление первой цифры деления
            Natural Prom       = N_9.Run(num1, num2, Result); // вычитание из первого числа второго, умноженного на первую цифру деления
            Natural PromResult = new Natural(new int[1]);

            while (N_1.Run(num2, Prom) == 2)
            {
                PromResult = N_10.Run(Prom, num2);
                Prom       = N_9.Run(Prom, num2, PromResult);
                Result     = N_4.Run(Result, PromResult);
            }
            num1 = N_4.Run(N_8.Run(num2, Result), Prom);
            return(Result);
        }