\p 250 \r rnd.txt print("rsearchlll(k,l,rl)"); rsearchlll(k,l,rl) = { terms=50; workterms=50; for(t=0,500, print(k","t); abas=vecextract(randvec(vector(terms,i,i)),"1..50"); invec=vector(workterms,i,i); for(i=1,workterms,invec[i]=abas[i]^k); out=lindep(invec,150); tot=sum(j=1,workterms,abs(out[j])); negsum=0; for(j=1,workterms,if(out[j]<0,negsum+=abs(out[j]))); ndrv=0; if(negsum>tot/2,negsum=tot-negsum;ndrv=1); if ((tot<=l)||(negsum<=rl), print(out); print(tot); srt=vecsort(abas,,5); abas=vecextract(abas,srt); out=vecextract(out,srt); print("(" k "," negsum "," tot-negsum ")"); write1(outsol,"(" k "," negsum "," tot-negsum ") "); if(ndrv==0, adpls=0; for(j=1,workterms, if(out[j]<0, if(adpls==1,write1(outsol,"+")); adpls=1; write1(outsol,abas[j]); if(abs(out[j])!=1,write1(outsol,"*"abs(out[j]))) ) ); write1(outsol,"="); adpls=0; for(j=1,workterms, if(out[j]>0, if(adpls==1,write1(outsol,"+")); adpls=1; write1(outsol,abas[j]); if(abs(out[j])!=1,write1(outsol,"*"abs(out[j]))) ) ), adpls=0; for(j=1,workterms, if(out[j]>0, if(adpls==1,write1(outsol,"+")); adpls=1; write1(outsol,abas[j]); if(abs(out[j])!=1,write1(outsol,"*"abs(out[j]))) ) ); write1(outsol,"="); adpls=0; for(j=1,workterms, if(out[j]<0, if(adpls==1,write1(outsol,"+")); adpls=1; write1(outsol,abas[j]); if(abs(out[j])!=1,write1(outsol,"*"abs(out[j]))) ) ) ); write(outsol," "); ) ); } print("rsearchlllprime(k,l,rl)"); rsearchlllprime(k,l,rl) = { terms=50; workterms=50; for(t=0,500, print("P "k","t); abas=vecextract(randvec(vector(terms,i,prime(i))),"1..50"); invec=vector(workterms,i,i); for(i=1,workterms,invec[i]=abas[i]^k); out=lindep(invec,150); tot=sum(j=1,workterms,abs(out[j])); negsum=0; for(j=1,workterms,if(out[j]<0,negsum+=abs(out[j]))); ndrv=0; if(negsum>tot/2,negsum=tot-negsum;ndrv=1); if ((tot<=l)||(negsum<=rl), print(out); print(tot); srt=vecsort(abas,,5); abas=vecextract(abas,srt); out=vecextract(out,srt); print("(" k "," negsum "," tot-negsum ")"); write1(poutsol,"(" k "," negsum "," tot-negsum ") "); if(ndrv==0, adpls=0; for(j=1,workterms, if(out[j]<0, if(adpls==1,write1(poutsol,"+")); adpls=1; write1(poutsol,abas[j]); if(abs(out[j])!=1,write1(poutsol,"*"abs(out[j]))) ) ); write1(poutsol,"="); adpls=0; for(j=1,workterms, if(out[j]>0, if(adpls==1,write1(poutsol,"+")); adpls=1; write1(poutsol,abas[j]); if(abs(out[j])!=1,write1(poutsol,"*"abs(out[j]))) ) ), adpls=0; for(j=1,workterms, if(out[j]>0, if(adpls==1,write1(poutsol,"+")); adpls=1; write1(poutsol,abas[j]); if(abs(out[j])!=1,write1(poutsol,"*"abs(out[j]))) ) ); write1(poutsol,"="); adpls=0; for(j=1,workterms, if(out[j]<0, if(adpls==1,write1(poutsol,"+")); adpls=1; write1(poutsol,abas[j]); if(abs(out[j])!=1,write1(poutsol,"*"abs(out[j]))) ) ) ); write(poutsol," "); ) ); }