From 0b694c22e891ebe44931175b79090fcaad778d36 Mon Sep 17 00:00:00 2001 From: Ata Deniz Aydin Date: Sun, 14 May 2017 20:22:39 +0300 Subject: [PATCH] update modp.py --- modp.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modp.py b/modp.py index 18a626c..aa886eb 100644 --- a/modp.py +++ b/modp.py @@ -1,8 +1,14 @@ class ModP(int): 'Integers mod p, p a prime power.' def __new__(cls, p, num): + self = int.__new__(cls, int(num) % p) self.p = p - return int.__new__(cls, int(num) % p) + return self + + def __str__(self): + return "%d (mod %d)" % (self, self.p) + def __repr__(self): + return "%d %% %d" % (self, self.p) # arithmetic def __add__(self, other): @@ -18,6 +24,8 @@ class ModP(int): def __rmul__(self, other): return ModP(self.p, int(other) * int(self)) def __div__(self, other): + if not isinstance(other, ModP): + other = ModP(self.p, other) return self * other._inv() def __rdiv__(self, other): return other * self._inv()