> #builds a table of small primes using sieve of Eratosthenes > bound:=10201: > smallprime:=array(0..bound): > smallprime[0]:=false: > smallprime[1]:=false: > for i from 2 to bound do smallprime[i]:=true end do: > j:=2: > while j*j<=bound do > for i from 2 to iquo(bound,j) do smallprime[i*j]:=false end do; > j:=j+1; > while not smallprime[j] do j:=j+1 end do; > end do: > #interface( 'verboseproc' = 3 ): print(isprime); > #"estpremier" is the French words for "isprime" > estpremier:= > proc (n) > local btor, nr, p, r; > if n <= 10201 then smallprime[n] > elif igcd(30, n) <> 1 then false > elif igcd(323323, n) <> 1 then false > elif igcd(237695015402092069411816475303, n) <> 1 then false > elif > igcd(84969694892334181105323399091873499659260625866489327366115454263 > 4220389327076939090906947730950913750978691711866802886149933382509768 > 2386722983737962963066757674131126736578936440788157186969893730633113 > 0664786204486249492573240226273954373636390387526081667586612559568346 > 3069722044751229884822222855006268378634251996022599630131594564447006 > 4720696621750477244528915927867113, n) <> 1 then false > elif n < 1018081 then true > else return gmp_isprime(n) end if end proc; estpremier := proc(n) local btor, nr, p, r; if n <= 10201 then smallprime[n] elif igcd(30, n) <> 1 then false elif igcd(323323, n) <> 1 then false elif igcd(237695015402092069411816475303, n) <> 1 then false elif igcd(84969694892334181105323399091873499659260625866489327366115454263\ 4220389327076939090906947730950913750978691711866802886149933382509768238\ 6722983737962963066757674131126736578936440788157186969893730633113066478\ 6204486249492573240226273954373636390387526081667586612559568346306972204\ 4751229884822222855006268378634251996022599630131594564447006472069662175\ 0477244528915927867113, n) <> 1 then false elif n < 1018081 then true else return gmp_isprime(n) end if; end proc;