2013-11-09 4 views
0

정수 모드 링 (6)에서 2가 역변환되지 않습니다. 결과를 일반 정수로 2로 나누고 싶습니다. 다른 단어에서, 나는 정수 모드 링의 함정에서 탈출하고 일반 정수로 결과를 가져올 한 다음 다시 Integere을 설정하려면 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 (대상 개체) 또는 ZZ 또는 IntegerRing (대상 부모).

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 

또는 당신이 원하는 어떤 다른.

관련 문제