예제 #1
0
        private static FractionBigInt AddInverseSquare(FractionBigInt cur, ulong integer)
        {
            var isqr = integer * integer;
            var den  = cur.Denumerator * isqr;
            var num  = cur.Numerator * isqr + cur.Denumerator;

            return(new FractionBigInt(num, den));
        }
예제 #2
0
        private static FractionBigInt Sum(IEnumerable <ulong> integers)
        {
            var sum = new FractionBigInt(0, 1);

            foreach (var i in integers)
            {
                sum = AddInverseSquare(sum, i);
            }
            return(sum.Simplify());
        }
예제 #3
0
        private static FractionBigInt Sum(ulong[] numbers, ulong mask)
        {
            var sum = new FractionBigInt(0, 1);
            var i   = 0;

            while (mask > 0)
            {
                if (mask % 2 != 0)
                {
                    sum = AddInverseSquare(sum, numbers[i]);
                }
                i++;
                mask >>= 1;
            }
            return(sum.Simplify());
        }
예제 #4
0
 private static int CompareToTarget(FractionBigInt fraction)
 {
     return((fraction.Numerator << 1).CompareTo(fraction.Denumerator));
 }