pptest := proc (N::integer,t::integer) # # Probabilistischer Primzahltest, der mit # zuf\344llig gew\344hlten Startwerten 1 < a < N # maximal t Iterationen von # Teilbarkeitstest, # ggT-Test, # Fermat-Kongruenztest # Miller-Rabin-Test # durchf\374hrt. # local a,d,e,j,k,s,u,f,found,randomelement; randomelement := rand(2..N-1); for s from 1 to t do a := randomelement(); # # Teilbarkeitstest # if N mod a = 0 then RETURN(N,`ist keine Primzahl:`,a,`teilt`,N) fi; # # Euklid-Test # d := igcd(a,N); if d>1 then RETURN(N,`ist keine Primzahl: der GGT von`,a,`und`,N,`ist`,d) fi; # # Fermat-Test # e := a &^(N-1) mod N; if not (e=1) then RETURN(N,`ist keine Primzahl: Fermat-Test mit`,a,`liefert a^(N-1) mod N =`,e) fi; # # Miller-Rabin-Test # print(`Miller-Rabin-Test wird gestartet`); u := N-1; k := 0; while (u mod 2 = 0) do u := u/2; k := k+1; od; f := a &^u mod N; print(f); if (f=-1 mod N) or (f=1 mod N) then break fi; found := false; for j from 1 to k do f := f &^2 mod N; print(f); if f=-1 mod N then found := true; break fi; od; if found then break else RETURN(N,`ist keine Primzahl: Miller-Rabin-Test!`) fi; od; print(`MR-Test`,t,`-mal bestanden:`,N,`ist vermutlich Primzahl`); 1; end: pptest(41,3);NiNJQU1pbGxlci1SYWJpbi1UZXN0fndpcmR+Z2VzdGFydGV0RzYiNiMiIiI=NidJKE1SLVRlc3RHNiIiIiRJMC1tYWx+YmVzdGFuZGVuOkdGJCIjVEk4aXN0fnZlcm11dGxpY2h+UHJpbXphaGxHRiQ=NiMiIiI=pptest(561,5);NiNJQU1pbGxlci1SYWJpbi1UZXN0fndpcmR+Z2VzdGFydGV0RzYiNiMiJChHNiMiJGolNiMiI24=NiMiIiI=NiMiIiI=NiQiJGgmSUdpc3R+a2VpbmV+UHJpbXphaGw6fk1pbGxlci1SYWJpbi1UZXN0IUc2Ig==pptest(10007,5);NiNJQU1pbGxlci1SYWJpbi1UZXN0fndpcmR+Z2VzdGFydGV0RzYiNiMiJjErIg==NidJKE1SLVRlc3RHNiIiIiZJMC1tYWx+YmVzdGFuZGVuOkdGJCImMisiSThpc3R+dmVybXV0bGljaH5QcmltemFobEdGJA==NiMiIiI=isprime(10007);NiNJJXRydWVHSSpwcm90ZWN0ZWRHRiQ=findprime := proc (N::integer,t::integer) # # die n\344chstgr\366ssere Primzahl nach N # wird mittels probabilistische Primzahltest # bestimmt # t = Anzahl der Iterationen # local n; n := N; if (n mod 2 = 0) then n := n+1 fi; while true do if pptest(n,t)=1 then break fi; n := n+2; od; end;NiM+SSpmaW5kcHJpbWVHNiJmKjYkJ0kiTkdGJUkoaW50ZWdlckdJKnByb3RlY3RlZEdGKydJInRHRiVGKjYjSSJuR0YlRiVGJUMlPjgkOSRAJC8tSSRtb2RHRiU2JEYyIiIjIiIhPkYyLCZGMiIiIkY9Rj0/KEYlRj1GPUYlSSV0cnVlR0YrQyRAJC8tSSdwcHRlc3RHRiU2JEYyOSVGPVs+RjIsJkYyRj1GOUY9RiVGJUYlfindprime(8234857628934756343,5);NiNJQU1pbGxlci1SYWJpbi1UZXN0fndpcmR+Z2VzdGFydGV0RzYiNiMiNC8oZXJ4WSpbajooNiMiNClwVG9PXkxMLlI=NiMiNGdqdk0qR3cmW0IpNidJKE1SLVRlc3RHNiIiIiZJMC1tYWx+YmVzdGFuZGVuOkdGJCI0aGp2TSpHdyZbQilJOGlzdH52ZXJtdXRsaWNoflByaW16YWhsR0YkNiMiNGhqdk0qR3cmW0Ipisprime(%);NiNJJXRydWVHSSpwcm90ZWN0ZWRHRiQ=