#OK to post homework #Blair Seidler, 2021-03-28 Assignment 17 with(combinat): Help:=proc(): print(`CheckMordell(N),CheckDeligne(N),LehmerHunt(R,N)`): end: # 2. #It seems that the builtin expand/bigpow is really efficient. I couldn't find any #details of the implementation, but I also couldn't find a way to make JC1 take #a measurable amount of time even with millions of terms. # 3. #CheckMordell(N): verifies that tau(p)*tau(q)=tau(pq) for all primes p,q, between 2 and N. #Please use RseqFF(24,N), with N as large as your computer would agree to. CheckMordell:=proc(N) local R,i,j: R:=RseqFF(24,N^2): #Need almost N^2 terms to check the two largest primes <= N for i from 1 while ithprime(i)<=N do for j from i+1 while ithprime(j)<=N do if R[ithprime(i)]*R[ithprime(j)]<>R[ithprime(i)*ithprime(j)] then print(`failed on`,i,j): RETURN(false): fi: od: od: true: end: #### Results: I was able to run CheckMordell(900), which generated the first 810000 #### coefficients of the Ramanujan Tau function. Every time I tried to generate the #### first million coefficients with RseqFF, the Maple kernel crashed. # 4. #CheckDeligne(N): outputs the primes between 2 and N such that |tau[(p)|/2 p11/2 is #as small as possible, followed by its value (that hopefully is less than 2). Who is #the lucky prime? What is the value of |tau(p)|/2 p11/2 for that lucky prime? CheckDeligne:=proc(N) local R,i,p,v,smallest,sprime,largest,lprime: R:=RseqFF(24,N): sprime:=2: lprime:=2: smallest:=evalf(abs(R[2])/(2*2^(11/2))): largest:=smallest: for i from 2 while ithprime(i)<=N do p:=ithprime(i): v:=evalf(abs(R[p])/(2*p^(11/2))): if v>1 then print(`failed on`,p,v): RETURN(FAIL): fi: if v>largest then largest:=v: lprime:=p: elif v0 do od: if i=nops(L)+1 then RETURN(infinity): fi: i: end: