/// <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); }
/// <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); }
/// <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); }
/// <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); }