diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..438ae45 --- /dev/null +++ b/main.cpp @@ -0,0 +1,106 @@ +#include +#include + +using namespace std; + +bool odwracalny(int i, int n){ + for(int x=0; x= len(result): + result.append(0) + result[i+j] = tmp % self.n + return self.normalize(result) + + def multiplyConst(self, f, a): + result = [] + for i in f: + result.append((i*a)%self.n) + return result + + def substract(self, f, g): + result = [] + for i in range(0, len(f)): + if i < len(g): + result.append(math.fmod(f[i]-g[i], self.n)) + else: + result.append(f[i]) + return result + + def zero(self, a, b): + i = 0 + while True: + if (a + (-(b*i))) == 0: + return i + i = i + 1 + + + def divide(self, f, g): + quotient = [] + reminder = f + tmpList = [] + a = (len(f) - 1) + b = (len(g) - 1) + + for i in range(0, a-b+1): + quotient.append(0) + + q = len(quotient)-1 + tmp = 0 + + while a>=b: + tmp = self.zero(reminder[a], g[b]) + quotient[q] = tmp + q = q - 1 + tmpList = self.multiplyConst(g, tmp) + while len(tmpList) <= a: + tmpList.append(0) + reminder = self.substract(reminder, tmpList) + a = a - 1 + return self.normalize(reminder) + + def nwd(self, f, g): + if len(g)==0: + return f + return self.nwd(g, self.divide(f, g)) + + + + +polynomial = Polynomial(2) +f = [1, 1, 1, 0, 1] +g = [0, 1, 1] +print(polynomial.multiply(f, g)) +print(polynomial.divide(f, g)) +print(polynomial.nwd(f, g)) + +polynomial1 = Polynomial(6) +ff = [2, 1, 0, 2, 1, 3] +gg = [1, 0, 0, 5] +print(polynomial1.multiply(ff, gg)) +print(polynomial1.divide(ff, gg)) +print(polynomial1.nwd(ff, gg)) + + +