2013-11-09 70 views
0

問題是2在整數模式環(6)中不可逆。我想將結果分成2個普通整數。在另一個詞,我喜歡整數模式環的陷阱逃跑,並把結果向普通整數,然後如果你想再次打開eInteger它分成2ZeroDivisionError:反轉不存在

def fast_exponentiation(c, L, q): 
    Zq = IntegerModRing(q) # create Z_q 
    g2 = c 
    result = 1 
    while True: 
     y = L % 2 
     result = Zq(result) * Zq(g2 ** y) 
     g2 = Zq(g2 * g2) 
     L = L >> 1 
     if L == 0: 
      break 
    return result 

e = fast_exponentiation(2, 4, 6) 
print e/2 

回答

0

,你有幾種選擇:致電Integer(目標對象),或ZZIntegerRing,目標父母。

sage: e 
1 
sage: parent(e) 
Ring of integers modulo 6 
sage: ZZ(e) 
1 
sage: parent(ZZ(e)) 
Integer Ring 

所以:

sage: e = ZZ(e) 
sage: e/2 
1/2 
sage: e//2 
0 

,或者你想要任何其他。