Exemplo n.º 1
0
        public static LongNumber operator -(LongNumber number1, LongNumber number2)
        {
            if (number1 < number2)
            {
                return(null);
            }

            if (number1 == number2)
            {
                return(new LongNumber(0));
            }

            LongNumber result = new LongNumber(0);


            for (int i = 0; i < number1.Length; i++)
            {
                if (i < number1.Length - 1)
                {
                    result.Push(0);
                    (result)[i + 1] = (result)[i + 1] - 1;
                    (result)[i]     = (result)[i] + 10 + number1[i];
                }
                else
                {
                    result[i] = result[i] + number1[i];
                }

                if (i < number2.Length)
                {
                    result[i] = result[i] - number2[i];
                }

                if (result[i] / 10 > 0 && i < number1.Length - 1)
                {
                    (result)[i + 1] = (result)[i + 1] + 1;
                    result[i]       = result[i] % 10;
                }
            }

            int j = result.Length - 1;

            while (result[j] <= 0 && j > 0)
            {
                result.Pop();
                j--;
            }
            return(result);
        }
Exemplo n.º 2
0
        public static LongNumber operator %(LongNumber number1, LongNumber number2)
        {
            if (number1 == number2)
            {
                return(new LongNumber(0));
            }

            if (number1 < number2)
            {
                return(Copy(number1));
            }


            int        i    = number1.Length - 1;
            LongNumber temp = new LongNumber();

            while (i >= 0)
            {
                temp.InsertToStart(number1[i]);
                i--;
                if (temp[temp.Length - 1] == 0 && temp.Length > 1)
                {
                    temp.Pop();
                }

                while (temp < number2 && i >= 0)
                {
                    temp.InsertToStart(number1[i]);
                    i--;
                }

                while (temp >= number2)
                {
                    temp = temp - number2;
                }
            }
            return(temp);
        }