/// <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()); }
/// <summary> /// Функция находит производную многочлена /// </summary> /// <param name="polynom"> многочлен</param> /// <returns>Производная</returns> public static Polynomial Run(Polynomial polynom) { Polynomial Pol = new Polynomial(polynom.Values); //Создается новая переменная полином for (int i = 0; i < polynom.Values.Length - 1; ++i) // Цикл для перенесения коэфицентов в новую переменную(После дифференциирования) { Pol.Values[i] = new Rational(N_6.Run(Z_5.Run(Pol.Values[i + 1].Numerator), i + 1)); // Коэффицент умножается на степень и записывается в предыдущий элемент } Pol.Values[polynom.Values.Length - 1] = new Rational(N_6.Run(Z_5.Run(Pol.Values[0].Numerator), 0)); Pol.Clear();// очищаем от лишних нулей return(Pol); }
/// <summary> /// Вычисление первой цифры деления и умножение ее на 10^k, где k - ее разряд (второе число не меньше первого) /// </summary> /// <param name="n1">Первое натуральное число</param> /// <param name="n2">Второе натуральное число</param> /// <returns>Будет возвращен результат вычисления первой цифры деления и умноженной на 10^k, где k - ее разряд</returns> public static Natural Run(Natural n1, Natural n2) { n1.Clear(); n2.Clear(); if (N_1.Run(n1, n2) == 2) { throw new Exception(); // Если первое число меньше второго, то ошибка } Natural temp = new Natural(new int[1]); int k = 0; do { if (temp.Length == k) { temp = new Natural(new int[temp.Length + 1]); // Если длинна передаваемого числа болььше длинны массива, увеличить его на 1 } for (int p = 0; p <= k; p++) // Передача числа по разрядно из входящего во временный { temp.Value[temp.Length - p - 1] = n1.Value[n1.Length - p - 1]; } k++; } while (N_1.Run(temp, n2) == 2); int i = 1; while (N_1.Run(N_6.Run(n2, ++i), temp) != 1) { ; // Вычисление первой цифры от деления чисел } Natural result = new Natural(new int[n1.Length - k + 1]); result[result.Length - 1] = i - 1; return(result); }