\\ \\--------------------------------------------------------------------------------- \\ input: NO - fchi() \\--------------------------------------------------------------------------------- \\ \\ The program counts the classnumber \\ 1. with qfbclassno () PARI/GP and \\ 2. with chi () \\ \\--------------------------------------------------------------------------------- \\ fchi()={ local(i,p,m,ppr); \\ MAXPRIME=150; MAXMOC=15; \\ print(" Enter the number of primes - N=p1^k1*p2^k2..."); ppr=input(); vpr=vector(ppr,i,0); vmo=vector(ppr,i,0); for(ii=1,3000, \\ si=0; N=1; for(i=1,ppr, p=randomprime(MAXPRIME); if(p==2,p++); for(j=1,i-1, if(vpr[j]==p,si++;next(2)); ); m=random(MAXMOC); if(m==0,m++); vpr[i-si]=p; vmo[i-si]=m; N=N*p^m; ); print("\n\nN= ",N); print("\nfactor-N= ",factor(N)); print(" "); \\ print("Enter n(0,1,2..) - D=-(2*2^n*N)^2 - Negative number - end of program"); n=input(); if(n<0,return()); c=2^n; \\Begin chi() chi=1; for(i=1,ppr-si, if(vpr[i]%4==1, chi=chi*vpr[i]^(vmo[i]-1)*(vpr[i]-1); , chi=chi*vpr[i]^(vmo[i]-1)*(vpr[i]+1); ); ); \\End chi() D=-(2*c*N)^2; mcl=(chi*c)/2; cl=qfbclassno(D); print("\n mcl=",mcl); print("qfbclassno=",cl); if(cl==mcl, ,print("ERROR cl!=mcl - to analyze the error");return()); \\ print("\na random element is generated - q=qfbprimeform(D,pr)"); until(kronecker(D,pr)==1, pr=randomprime(MAXPRIME*10); ); q=qfbprimeform(D,pr); print("\n q=",q); print("\nq^mcl=",q^mcl); print("\n"); \\ ); \\ return(); \\ \\ } \\ \\---------------------------------------------------------------------------------