0

我在圣人中执行以下操作:

圣人:Zp = Zmod(101)
圣人:Zp(5)
5
圣人:Zp(-1)
100
贤者:Zp(100)
100

我知道 -1 = 100 mod 101,但我希望 sage 在这两种情况下都输出 -1 而不是 100。

更一般地说,在 Zmod(p) 中工作时,我希望输出处于区间 (-p/2, p/2] 中。

4

1 回答 1

2

由于 IntegerMod_int 是在 Cython 中实现的以提高速度,因此您无法在运行时更改此行为。获得所需功能的最简单方法是更改​​在 sage/rings/finite_rings/integer_mod.pyx 中定义的repr函数,第 1462 行(至少,这是 5.0-beta12 中的行号)。用类似的东西替换它

def _repr_(self):
    x = self.lift()
    modulus = self.parent().modulus()
    if x <= modulus // 2:
        return str(x)
    else:
        return str(x-modulus)
于 2012-05-17T16:56:25.797 回答