OK, I don't have time for a whole lecture on the subject but in a nutshell:
Each elliptic curve (over Q) has a modular form associated to it (as proved by Wiles et al), which is a power series whose coefficents are denoted a_n. These are easily determined from the a_p (for prime p). And the definition of a_p is 1+p-#E(F_p), except that for primes of bad reduction the definition is a little different. William's solution using E.Np() is more transparent than mine (as well as simpler and faster -- I'm not a SAGE expert! ) and makes sense without knowning about modular forms or a_p. For primes of bad reduction it still makes sense to reduce the curve mod p and count the points on that, even though the reduced curve is not an elliptic curve. The answer is always p-1, p, or p+1 in that case. That is probably prved in Silverman & Tate -- or if not I could give you other references. John On 8/10/07, Justin <[EMAIL PROTECTED]> wrote: > > Thank you both for your recommendations. > > Seeing that I'm new to SAGE and Python, could you explain what these > different solutions actually do? > > I've just been teaching myself out of Tate and Silverman's "Rational > Points on Elliptic Curves" and I see that aplist has something to do > with the fourier coefficients of the modular form associated with the > elliptic curve. (Explanation of even this to a lowly undergrad such as > myself is appreciated) > > I've further noticed that the produced output for Mr. Stein's is > different from Mr. Cremona's solution. Furthermore Mr. Cremona's > output closely matches what I got except it produces output for when > p=11! The discriminant of this curve is -11 and thus the reduction > should be bad there (thus I avoided it). > > I've also considered just using e.sea(p) since that supposedly gives > me the number of points on the curve over F_p, but e.sea(3) throws me > an error claiming that the curve is singular there and the value for > e.sea(7) already doesn't match Mr. Cremona's and my output! > > Any suggestions? > -Justin > > > On Aug 10, 11:50 am, "William Stein" <[EMAIL PROTECTED]> wrote: > > On 8/10/07, John Cremona <[EMAIL PROTECTED]> wrote: > > > > > > > > > Two comments, neither about memory management as such: > > > > > (1) Why do you need to store all the primes and curves? Why don't you > > > loop through primes? > > > > > (2) EllipticCurve([0,-1,1,0,0]).aplist(10000) gives you almost what > > > you want (just replace the i'th entry ap by 1+p-ap where p is the ith > > > prime): > > > > > e=EllipticCurve([0,-1,1,0,0]); > > > ap=e.aplist(10000); > > > plist=prime_range(10000); > > > [1+plist[i]-ap[i] for i in range(prime_pi(10000))] > > > > Moreover, even EllipticCurve([0,-1,1,0,0]).aplist(1000000) > > will finish in a reasonable amount of time -- i.e., it's very very optimized > > (thank you PARI). You can also do the following, which is basically > > the same as above and even faster: > > sage: e = EllipticCurve([0,1,-1,0,0]) > > sage: v = [e.Np(p) for p in primes(10000)] > > > > William > > > > > -- John Cremona --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-support URLs: http://sage.math.washington.edu/sage/ and http://sage.scipy.org/sage/ -~----------~----~----~----~------~----~------~--~---