1 | initial version |

While the quotient you constructed is a valid object, it seems to be not the optimal way to construct the respective mathematical object. Apparently, general `quotient`

s of the Gaussian integers `ZZ[I]`

currently have only barebones functionality; SageMath doesn't even know when they are finite. However, since `p`

is prime in `ZZ[I]`

we can compute the `residue_field`

instead (which is a much better implementation of the quotient):

```
p = 107927
G = ZZ[I]
J = G.ideal(p)
Q.<a> = G.residue_field(J)
A = (95385+100114*a)
B = (18724+61222*a)
E = EllipticCurve(Q,[A, B])
print(E)
print(E.cardinality())
```

It outputs:

```
Elliptic Curve defined by y^2 = x^3 + (100114*a+95385)*x + (61222*a+18724) over Residue field in a of Fractional ideal (107927)
11648283482
```

as you predicted.

2 | No.2 Revision |

While the quotient you constructed is a valid object, it seems to be not the optimal way to construct the respective mathematical object. Apparently, general `quotient`

s of the Gaussian integers `ZZ[I]`

currently have only barebones functionality; SageMath doesn't even know when they are finite. However, since `p`

is prime (hence maximal) in `ZZ[I]`

we can compute the `residue_field`

instead (which is a much better implementation of the quotient):

```
p = 107927
G = ZZ[I]
J = G.ideal(p)
Q.<a> = G.residue_field(J)
A = (95385+100114*a)
B = (18724+61222*a)
E = EllipticCurve(Q,[A, B])
print(E)
print(E.cardinality())
```

It outputs:

```
Elliptic Curve defined by y^2 = x^3 + (100114*a+95385)*x + (61222*a+18724) over Residue field in a of Fractional ideal (107927)
11648283482
```

as you predicted.

3 | No.3 Revision |

While the quotient you constructed is a valid object, it seems to be not the optimal way to construct the respective mathematical object. Apparently, general `quotient`

s of the Gaussian integers `ZZ[I]`

currently have only barebones functionality; SageMath doesn't even know when they are finite. However, since `p`

is prime (hence maximal) in `ZZ[I]`

we can compute the `residue_field`

instead (which is a much better implementation of the quotient):

```
p = 107927
G = ZZ[I]
J = G.ideal(p)
Q.<a> = G.residue_field(J)
A = (95385+100114*a)
B = (18724+61222*a)
E = EllipticCurve(Q,[A, B])
print(E)
print(E.cardinality())
```

It outputs:

```
Elliptic Curve defined by y^2 = x^3 + (100114*a+95385)*x + (61222*a+18724) over Residue field in a of Fractional ideal (107927)
11648283482
```

as you predicted.

Alternatively, making use of the third isomorphism theorem:

```
p = 107927
Q.<a> = GF(p^2, modulus=x^2+1)
```

This is possibly even faster.

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.