public XInt Factorial(int N)
        {
            var n = (uint)N;
            var exp2 = (int)(n - MathFun.BitCount(n));

            if (n < SmallOddFactorial.Length)
            {
                return new XInt(SmallOddFactorial[n]) << exp2;
            }

            if (n >= SmallOddSwing.Length)
            {
                this.prime = new Primes(n);
                this.factors = new Factors(n);
            }

            return this.OddFactorial(n) << exp2;
        }
示例#2
0
        public XInt Factorial(int N)
        {
            var n    = (uint)N;
            var exp2 = (int)(n - MathFun.BitCount(n));

            if (n < SmallOddFactorial.Length)
            {
                return(new XInt(SmallOddFactorial[n]) << exp2);
            }

            if (n >= SmallOddSwing.Length)
            {
                this.prime   = new Primes(n);
                this.factors = new Factors(n);
            }

            return(this.OddFactorial(n) << exp2);
        }