default(nbthreads) default(timer,1); isprime(2^600+187) cpu time = 1,244 ms, real time = 197 ms. nbthreads = default(nbthreads); default(nbthreads,1) isprime(2^600+187) time = 660 ms. default(nbthreads,nbthreads); ismersenne(x)=ispseudoprime(2^x-1); apply(ismersenne,primes(400)) cpu time = 1,248 ms, real time = 1,247 ms. parapply(ismersenne,primes(400)) cpu time = 2,253 ms, real time = 298 ms. select(ismersenne,primes(400)) cpu time = 1,192 ms, real time = 1,199 ms. parselect(ismersenne,primes(400)) cpu time = 2,248 ms, real time = 299 ms. ismersenne(x)=ispseudoprime(2^x-1); fun(V)=parvector(#V,i,ismersenne(V[i])); fun(primes(400)) break export(ismersenne) fun(primes(400)) export(f=25); f parsum(i=1,1,f) V=primes(400); parvector(#V,i,ispseudoprime(2^V[i]-1)) break exportall() parvector(#V,i,ispseudoprime(2^V[i]-1)) fun(n)=bnfinit(x^n-2).no; parapply(fun,[1..30]) break fun(n)=bnfinit('x^n-2).no; default(timer,1); default(parisize,"16M"); apply(fun,[1..30]) cpu time = 5,284 ms, real time = 5,281 ms. parapply(fun,[1..30]) cpu time = 9,084 ms, real time = 2,045 ms. parapply(fun,-[-30..-1]) cpu time = 9,281 ms, real time = 1,905 ms. thuemorse(n)= my(V=binary(n)); (-1)^sum(i=1,#V,V[i]); export(thuemorse); default(timer,1); sum(n=1,2*10^6, thuemorse(n)/n*1.) cpu time = 4,861 ms, real time = 4,862 ms. parsum(n=1,2*10^6, thuemorse(n)/n*1.) cpu time = 17,245 ms, real time = 4,426 ms. parsum(N=1,200, \ sum(n=1+(N-1)*10^4, N*10^4, thuemorse(n)/n*1.)) cpu time = 11,836 ms, real time = 1,526 ms. ismersenne(x)=ispseudoprime(2^x-1); export(ismersenne) parfor(p=1,999,ismersenne(p),c,if(c,print(p))) prodmersenne(N)= { my(R=1); parforprime(p=1,N, ismersenne(p), c, if(c, R*=p)); R; } prodmersenne(1000) cpu time = 108 ms, real time = 31 ms. parforprime(p=1,999,ismersenne(p),c,\ if(c,print(p))) prodmersenne(N)= { my(R=1); parforprime(p=1,N, ismersenne(p), c, if(c, R*=p)); R; } prodmersenne(1000) parforvec(v=[[1,3],[1,3]],factorback(v)\ ,f,print(v,":",f)) parploth(x=-4.5,6,\ intnum(t=0,x,if(t,1/gamma(t)))) ismersenne(x)=ispseudoprime(2^x-1); export(ismersenne) findmersenne(a)= { parforprime(p=a,,ismersenne(p),c, if(c,return(p))); } findmersenne(4000) cpu time = 2,600 ms, real time = 366 ms. findmersenne(8) cpu time = 4 ms, real time = 1 ms. findmersenne(8) parfirst(fun,V)= parfor(i=1,#V,fun(V[i]),j,if(j,return([i,j]))); parfirst(ismersenne,[4001..5000]) cpu time = 3,104 ms, real time = 442 ms.