Beispiel #1
0
        /// <summary>
        /// Нахождение частного от деления целого на натуральное
        /// </summary>
        /// <param name="A">Делимое(целое число)</param>
        /// <param name="B">Делитель(меньшее натуральное число)</param>
        /// <returns>Целое число - частное от деления</returns>

        public static Digit Run(Digit A, Natural B)
        {
            //запоминаем знак целого числа
            int sign = Z_2.Run(A);

            // делаем из целого числа натуральное с равным модулем
            Natural abs = Z_1.Run(A);

            //частное от деления одного натурального на другое
            abs = N_11.Run(abs, B);

            Digit Result;

            //добавление знака (преобразование натурального в целое)
            //если число отрицательное
            if (sign == 2)
            {
                Result = new Digit(false, abs);
            }

            //если число неотрицательное
            else
            {
                Result = new Digit(true, abs);
            }

            return(Result);
        }
Beispiel #2
0
        /// <summary>
        /// НОК натуральных чисел
        /// </summary>
        /// <param name="A">Первое натуральное число</param>
        /// <param name="B">Второе натуральное число</param>
        /// <returns>Будет возвращено Наименьшее общее кратное </returns>
        public static Natural Run(Natural A, Natural B)
        {
            A.Clear(); B.Clear();                                     // Переменные очищаются от лишних нулей
            Natural output = N_11.Run(N_8.Run(A, B), N_13.Run(A, B)); // НОК = (a*b)/НОД(a,b) - это формула

            return(output);
        }
Beispiel #3
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)
            {
                throw new Exception();                          // Если второе число больше, то ошибка
            }
            Natural DivResult = N_11.Run(num1, num2);           // Находим частное от деления
            Natural ModResult = N_9.Run(num1, num2, DivResult); // С помощью частного находим остаток

            return(ModResult);
        }
Beispiel #4
0
        /// <summary>
        /// сокращение дроби
        /// </summary>
        /// <param name="A"> Дробь </param>
        /// <returns>Будет возвращенa сокращенная дробь </returns>
        public static Rational Run(Rational A)
        {
            if (A.Clear().Numerator[0] == 0 && A.Numerator.Length == 1)
            {
                return(new Rational("0"));
            }
            Natural HOD = N_13.Run(Z_5.Run(new Digit(A.Denominator)), Z_5.Run(A.Numerator)); // Находим НОД числителя и знаменателя

            A.Numerator   = Z_9.Run(A.Numerator, HOD);                                       //Сокращаем числитель на НОД числителя и знаменятеля
            A.Denominator = N_11.Run(A.Denominator, HOD);                                    // Сокращаем знаменатель на нод

            return(A);
        }