def sum(a, b): a1 = Natural(str(a)) b1 = Natural(str(b)) if a1<b1: a1,b1 = b1,a1 text = a1, "//", b1, "=", a1 // b1 return text
def __pow__(self, oth): '''Возведение целого числа в степень, Васильев Максим''' a = Natural(str(self.abs())) b = Natural(str(oth.abs())) # Результат - возведение натурального a в b res = Integer(str(a**b)) # Отрицательность получается из соображений четности степени if self.negative and (b % Natural('2') == Natural('1')): res.negative = self.negative # Возвращаем <object Integer> return res
def __init__(self, str): '''Конструктор рационального числа, Васильев Максим''' # self.numer - хранит числитель (numerator), self.denom # хранит знаменатель (denominant), числа вводятся в виде # num/den a = str.split('/') self.numer = Integer(a[0]) self.denom = Natural(a[1])
def toi(self): '''Преобразование в целое рационального, Васильев Максим''' self.red() # Если знаменатель после сокращения равен 1 - то число целое if self.denom == Natural('1'): # Возвращаем <object Integer> return Integer(str(self.numer)) return self
def turn(self): '''Получение вида 1/x - для дроби, Васильев Максим''' # Числитель становится знаменателем # Знаменатель числителем n_den = Natural(str(self.numer.abs())) n_num = Integer(str(self.denom)) n_num.negative = self.numer.negative # Возвращаем <object Rational> return Rational(str(n_num) + '/' + str(n_den))
def toContinued(self): '''Дробь в непрерывную, Васильев Максим''' a = Natural(str(self.numer.abs())) b = Natural(str(self.denom)) res = '' # Применяем алгоритм Евклида к дробям, записываем # в res строку вида '1 2 3 4 5' где цифры - остатки # от деления while not a.isZero() and not b.isZero(): if a > b: res += str(a // b) + ' ' a = a % b else: res += str(b // a) + ' ' b = b % a # Вызываем функцию которая возвращает красивое представление # непрерывной дроби # Возвращает <object String> return contForm(res)
def abs(integer): '''ABS_Z_N Абсолютная величина числа, Васильев Максим''' return Natural(''.join(str(i) for i in reversed(integer.digits)))
def ton(self): '''Преобразование Integer->Natural, Васильев Максим''' # Возвращаем <object Natural> return Natural(str(self.abs()))
def division(a): a1 = Natural(str(a)) text = "Количество простых чисел до " + a + " = "+ str(Natural.primes(a1)) return text
def sum(a, b): a1 = Natural(str(a)) b1 = Natural(str(b)) text = a + "**" + b + "=" + str(a1 ** b1) return text
def sum(a, b): a1 = Natural(str(a)) b1 = Natural(str(b)) text = "LCM( "+ a + "," + b + " ) = " + str(Natural.lcm(a1, b1)) return text
def sum(a, b): a1 = Natural(str(a)) b1 = Natural(str(b)) text = "GCD( "+ a +" , "+ b +" ) = " + str(Natural.gcd(a1,b1)) return text
def sum(a, b): a1 = Natural(str(a)) b1 = Natural(str(b)) text = str(a1) + " % " + str(b1) + " = " + str(a1 % b1) return text
def sum(a, b): a1 = Natural(str(a)) b1 = Natural(str(b)) text = a1, "*", b1, "=", a1 * b1 return text
def division(a): a1 = Natural(str(a)) text = "fi(" + a + ") = "+ str(Natural.eilerfi(a1)) return text
def division(a): a1 = Natural(str(a)) text = a + " = "+ cortarrtostr(a1.factorize()) return text