=================================================================== RCS file: /home/cvs/OpenXM_contrib/pari-2.2/examples/Attic/rho.gp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -p -r1.1 -r1.2 --- OpenXM_contrib/pari-2.2/examples/Attic/rho.gp 2001/10/02 11:16:59 1.1 +++ OpenXM_contrib/pari-2.2/examples/Attic/rho.gp 2002/09/11 07:26:45 1.2 @@ -1,6 +1,5 @@ rho1(n)= -{ - local(x,y); +{ local(x,y); x=2; y=5; while(gcd(y-x,n)==1, @@ -11,8 +10,7 @@ rho1(n)= } rho2(n)= -{ - local(m); +{ local(m); m=rho1(n); if (isprime(m), @@ -28,37 +26,36 @@ rho2(n)= } rho(n)= -{ - local(m); +{ local(m = factor(n,0)); - m=factor(n,0); print(m); - n=m[length(m[,1]),1]; + print(m); m = m[,1]; n = m[#m]; if (!isprime(n),rho2(n)); } rhobrent(n)= -{ - x=y=x1=2; k=l=p=1; c=0; +{ local(x,y,x1,k,l,p,c,g); + + x1=x=y=2; k=l=p=1; c=0; while (1, - x=(x^2+1)%n; p=(p*(x1-x))%n; c++; + x=(x^2+1)%n; p=(p*(x1-x))%n; + c++; if (c==20, if (gcd(p,n)>1, break); - y=x;c=0 + y=x; c=0 ); k--; if (!k, if (gcd(p,n)>1, break); - x1=x; k=l; l <<= 1; \\ l = 2*l + x1=x; k=l; l <<= 1; for (j=1,k, x=(x^2+1)%n); y=x; c=0 ) ); - g=1; - while (g==1, + until (g!=1, y=(y^2+1)%n; g=gcd(x1-y,n) ); - if (g==n,error("algorithm fails")); + if (g==n, error("algorithm fails")); g }