Elliptic Curves Modulo $ p$

Let $ p$ be a prime number. Consider an equation $ y^2=x^3+ax+b$ with

$\displaystyle a,b \in \mathbb{F}_p = \{0,1,\ldots, p-1\}$   (integers modulo $p$)

such that the cubic $ x^3 + ax + b$ has distinct roots. The group of points on $ E$ modulo $ p$ is

$\displaystyle E(\mathbb{F}_p) = \{(x,y)\in \mathbb{F}_p \times \mathbb{F}_p : y^2 = x^3 +ax + b\} \cup \{\mathcal{O}\}.
$

Exercise: Make up several ``random'' elliptic curves over various random $ \mathbb{F}_p$ 's in SAGE (so not related to the congruent number problem!). List their points. Plot them. Do a little arithmetic with them. Here is some code to get you started.

Finding a random prime $ <1000$ :

sage: next_prime(randrange(1000))
137
Making up a random curve:
sage: p = 137
sage: F = FiniteField(p)
sage: E = EllipticCurve(F, [F.random_element(), F.random_element()])
sage: print E
Elliptic Curve defined by y^2  = x^3 + 45*x + 43 over Finite Field of size 137
List all points:
sage: E.points()
[(0 : 1 : 0), (51 : 90 : 1), (57 : 92 : 1), (90 : 34 : 1), ...
Make a plot:
sage: show(plot(E, hue=.9))
Do some arithmetic:
sage: P = E.points()[1]  # first point listed above
sage: P
(51 : 90 : 1)
sage: P + P
(57 : 92 : 1)
sage: 10*P
(131 : 105 : 1)
sage: 9393*P
(129 : 26 : 1)



William Stein 2006-07-07