Costruzione di una relazione: 
elevare un primo della factor base ad un esponente arbitrario dell'ordine di grandezza di log(p), 
modulo p;
fattorizzare la classe resto r  cosi’ ottenuta e stampare la fattorizzazione, solo se r e' B-smooth.

INPUT: il primo p, l'ordine di smoothness B, il numero di tentativi da fare N.  

Rel(p,B,N)=for(k=1,N,\
 l=nextprime(random(B));\
e=random(floor(log(p)))+10;\
r=lift(Mod(l,p)^e);\
if(r==1,print("1"),\
ff=factor(r);\
ll=length(mattranspose(ff));\
m=ff[ll,1];\
if( m<B,print("the prime is =",l,"  ","the exponent is =",e,"  "," the residue r is =",  r, " its factorization is ",ff))))

ESEMPIO di OUTPUT: 

Rel(1061,10,20)
the prime is =7  the exponent is =12   the residue r is =30 its factorization is [2, 1; 3, 1; 5, 1]

significa che modulo 1061
7^12 =30=2*3*5.

(da cui la relazione 
12 log(7)=log(2) + log(3)+log(5)  fra i rispettivi logaritmi).

-----------------------------------------------------------------------
--------------------------------------------------------------------------------------------
costruzione di una relazione per calcolare log(x) 
elevare un primo della factor base ad un esponente arbitrario dell'ordine di log(p);
moltiplicarlo per x  e   ridurlo modulo p;
fattorizzarlo e stampare la fattorizzazione, solo se e' B-smooth.

INPUT: la classe x di cui vogliamo il logaritmo, il primo p, l'ordine di smoothness B, il numero di tentativi da fare N.  

Rel(x,p,B,N)=for(k=1,N,\
l=nextprime(random(B));\
e=random(floor(log(p)))+1;\
r=lift(Mod(x*lift(Mod(l,p)^e),p));\
if(r==1,print("1"),\
ff=factor(r);\
ll=length(mattranspose(ff));\
m=ff[ll,1];\
if( m<B,print("the prime is =",l,"  ","the exponent is =",e,"  "," the residue r is =",  r, " its factorization is ",ff))))

ESEMPIO di OUTPUT: 

Rel(101,1061,10,20)
the prime is =11  the exponent is =1    the residue r is =50 its factorization is [2, 1;  5, 2]

significa che modulo 1061
101*11 =50=2*5^2.

(da cui la relazione 
log(x)+ log(11)=log(2)  +2*log(5)  fra i rispettivi logaritmi).