PrimeList( d, upper, l ) = { local( p, i, puffer, PListe ); p = 2; puffer = []; if ( !((d+1)%8) || !((d-1)%8), puffer = concat(puffer, [2])); p = nextprime(3); while( p < upper, kro = kronecker(d, p); if ( (kro == -1 && p^2 < upper && (!((p+1)%l) || !((p-1)%l))) || (kro == 0 && !((p-1)%l)) || (kro == 1 && !((p-1)%l)) || p == l, puffer = concat( puffer, [p] ); ); p = p + 1; p = nextprime( p ); ); PListe = []; for (i=1, length(puffer), PListe = concat(PListe, idealprimedec( K, puffer[i] ))); return(PListe); } {EnumSubSets(PSet, K, E, l, r, Subset, P, module, rcgp, sgl) = Subset = InitSubset(r, length(PSet)); while (Subset, P = vector(r, i, PSet[Subset[i]]); module = 1; for( i = 1, length( P ), if (P[i][1] == l, module = idealmul( K, module, idealpow(K, P[i], 2 )) , module = idealmul( K, module, P[i] ) ); ); rcgp = bnrinit( K, module, 1 ); sgl = findsubgroup( rcgp, l ); if (length(sgl) > 0, print("module = ", idealfactor(K, module), "\n Number of subgroups: ", length(sgl))); for (i=1, length(sgl), print( " Subgroup ", i ); Y = etnc(K, l, E, rcgp, sgl[i]); if (Y[1] == 0, return(Y[2])); print("\n\n ******************************************************* \n\n") ); Subset = NextSubset(Subset, length(PSet)); ); return(1); } false = 0; {InitSubset(r, t, i) = return(vector(r, i, i)); } {NextSubset(s, t, i, r, s1, j, carry)= i = r = length(s); carry = true; s1 = concat(s, [t+1]); while ( i > 0 && carry, if (s1[i] < s1[i+1]-1, s1[i]++; carry = false , i-- ); ); if (carry, return(false)); if (i < r, for (j = i+1, r, s1[j] = s1[j-1]+1) ); return(vector(r, i, s1[i])); }