To compute
in SAGE, type
sage: R = Integers(97) sage: a = R(51) sage: a^2006 12
Instead of R = Integers(97) you can also type R = IntegerModRing(97).
sage: R = IntegerModRing(51) sage: M = MatrixSpace(R,3,3) sage: A = M([1,2,3, 4,5,6, 7,8,9]) sage: A^2006 [42 0 9] [30 45 9] [18 39 9]
sage: R = PolynomialRing(GF(97),'x') sage: x = R.gen() sage: S = R.quotient(x^3 + 7, 'a') sage: a = S.gen() sage: S Univariate Quotient Polynomial Ring in a over Finite Field of size 97 with modulus x^3 + 7 sage: a^2006 4*a^2
Another approach to this:
sage: R = PolynomialRing(GF(97),'x') sage: x = R.gen() sage: S = R.quotient(x^3 + 7, 'a') sage: a = S.gen() sage: time a^20062006 CPU times: user 0.02 s, sys: 0.00 s, total: 0.02 s Wall time: 0.03 80*a sage: gap.eval("R:= PolynomialRing( GF(97))") 'PolynomialRing(..., [ x_1 ])' sage: gap.eval("i:= IndeterminatesOfPolynomialRing(R)") '[ x_1 ]' sage: gap.eval("x:= i[1];;") '' sage: gap.eval("f:= x;;") '' sage: gap.eval("PowerMod( R, x, 20062006, x^3+7 ); time;") 'Z(97)^41*x_1\n5' sage: time gap.eval("PowerMod( R, x, 20062006, x^3+7 ); time;") CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s Wall time: 0.00 'Z(97)^41*x_1\n0' sage: gap.eval("PowerMod( R, x, 2006200620062006, x^3+7 ); time;") 'Z(97)^4*x_1^2\n0' sage: time a^2006200620062006 CPU times: user 0.04 s, sys: 0.00 s, total: 0.05 s Wall time: 0.06 43*a^2 sage: gap.eval("PowerMod( R, x, 2006200620062006, x^3+7 ); time;") 'Z(97)^4*x_1^2\n0'
See About this document... for information on suggesting changes.