Beispiel #1
0
        public static BigInteger SelectAppropriateMod(IntPolynomial f, IntPolynomial SquareFreef)
        {
            BigInteger mod = 2;

            while (true)
            {
                while (f[f.degree] % mod == 0)
                {
                    mod = getNextPrime(mod);
                }
                RingPolynomial.SetModContext(mod);
                RingPolynomial Ringf = new RingPolynomial(SquareFreef);
                RingPolynomial.GCD(Ringf, Ringf.Derivative(), out RingPolynomial gcdRes);
                if (gcdRes.degree < 1 && ((Ringf / gcdRes).Quotient).FindNumOfMultipliers() > 0)
                {
                    break;
                }

                mod = getNextPrime(mod);
            }
            return(mod);
        }