\def{text N=19048567}
\def{integer B=randint(23..50)}
\def{integer N=(2*randint(100..150)+1)*(2*randint(100..150)+1)}
\def{text N=pari(nextprime(5000+random\(1234))*nextprime(10000+random\(1234345)))}
\def{integer N=(2*randint(100..150)+1)*(2*randint(100..150)+1)}

\reload{<img src="gifs/doc/etoile.gif" alt="rechargez" width="20" height="20">} 
\form{.}{expform}{Laissez faire le hasard (enfin presque) 
ou choisissez  un entier  N infrieur  100000 : 
<input size=6 name=parm1 value="\parm1"> et une base de friabilit B : 
<input size=6 name=parm2 value="\parm2">
<input type=submit value=OK> } 
\def{integer value=\parm1}
\def{text  N=\value issametext NaN ? \N:\parm1}
\def{text N=pari(\N)}
\def{integer value=\parm2}
\def{text  B=\value issametext NaN ? \B:\parm2}
\def{text L=pari(L=listcreate(100); forprime(q =1,\B, listput(L,q)); print(Vec(L)))}
\def{text Q=pari(Q=1; forprime(q=1, \B, a=floor(log(\N)/log(q));
Q=Q*q^a);print(Q))}
\def{text a=pari(2+random\(\N-2))}
Prenons l'entier \(N = \N) et \(B = \B) comme base de friabilit. 
On part d'un entier \(a = \a). Voici le rsultat des oprations : 

\def{text tableau=<table align="center" border=1><tr align="center"><th>a</th><th>q</th><th>s</th><th>\(a^(q^s)) mod N</th><th>pgcd(\(a^(q^s)-1,N))</th></tr>}
\for{q in \L}{
\def{text test=pari(s=floor(log(\N)/log(\q)); 
[\a,\q,s,lift(Mod(\a,\N)^(\q^s)), gcd(lift(Mod(\a,\N)^(\q^s)-1),\N)])}
\def{text a=item(4,\test)}
\def{text tableau=\tableau <tr align="center"><td bgcolor="skyblue">item(1,\test)</td><td>item(2,\test)</td><td>item(3,\test)</td><td>item(4,\test)</td><td>item(5,\test)</td></tr>}
}
\def{text tableau=\tableau </table>}
\tableau