public static bool Simple(LongNumber number1, LongNumber number2)
 {
     if (number1 == new LongNumber(0) || number2 == new LongNumber(0))
     {
         return(false);
     }
     return(LeastCommon(number1, number2) == new LongNumber(1));
 }
        public static LongNumber Copy(LongNumber MyList1)
        {
            LongNumber temp = new LongNumber();

            for (int i = 0; i < MyList1.Length; i++)
            {
                temp.Push(MyList1[i]);
            }
            return(temp);
        }
        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);
        }
        static void Main(string[] args)
        {
            Console.WriteLine("first number");
            string string_number1 = Console.ReadLine();

            Console.WriteLine("second number");
            string     string_number2 = Console.ReadLine();
            LongNumber number1        = new LongNumber(string_number1);
            LongNumber number2        = new LongNumber(string_number2);

            if (LongNumber.Simple(number1, number2))
            {
                Console.WriteLine("\nMutually \n");
            }
            else
            {
                Console.WriteLine("\nNot mutually \n");
            }
            Console.ReadKey();
        }
 public static LongNumber LeastCommon(LongNumber number1, LongNumber number2)
 {
     if (number1 >= number2)
     {
         LongNumber temp = number1 % number2;
         if (temp == new LongNumber(0))
         {
             return(Copy(number2));
         }
         return(LeastCommon(number2, temp));
     }
     else
     {
         LongNumber temp = number2 % number1;
         if (temp == new LongNumber(0))
         {
             return(Copy(number1));
         }
         return(LeastCommon(number1, temp));
     }
 }
        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);
        }