Karim Belabas on Fri, 20 Feb 2015 20:51:13 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: moebius function |
* Charles Greathouse [2015-02-20 18:43]: > > N.B. sum(x=1,n, moebius(x)) is a simpler form for the same computation. > > Yes. I tried to do it more cleverly once: [...] > Mertens(n, M=0)={ > if(n<4, return(2-n)); > if(!M, > M=muTable(sqrtint(n)); > for(i=2, #M, M[i]+=M[i-1]) > ); > my(cross1=n\(#M-1), cross2=n\(sqrtint(n)+1)); > 1-sum(d=2, min(cross1, cross2), > Mertens(n\d, M) > )-sum(d=cross1+1, cross2, > M[n\d] > )-sum(k=1, sqrtint(n), > (n\k-n\(k+1))*M[k] > ) > }; > > but it ended up being slower than the naive sum(k=1,n,moebius(k)). Sad. The O(n^(1/2)) small values of d in the first inner sum kill you (=> O~(n) algorithm). You can easily improve on this: http://projecteuclid.org/download/pdf_1/euclid.em/1047565447 (=> O~(n^(2/3)) algorithm) Cheers, K.B. -- Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17 Universite de Bordeaux Fax: (+33) (0)5 40 00 69 50 351, cours de la Liberation http://www.math.u-bordeaux.fr/~kbelabas/ F-33405 Talence (France) http://pari.math.u-bordeaux.fr/ [PARI/GP] `