示例#1
0
 public LongNumber(long number)
 {
     this.B = number % this.X;
     if (number >= X)
     {
         this.A = new LongNumber(number / this.X);
     }
 }
示例#2
0
 //public static LongNumber operator +(LongNumber firstNumber, LongNumber seconNumber)
 //{
 //    return new Complex(c1.real + c2.real, c1.imaginary + c2.imaginary);
 //}
 public static LongNumber operator +(LongNumber firstNumber, long seconNumber)
 {
     if (firstNumber == null)
     {
         return null;
     }
     else
     {
         LongNumber newNumber = new LongNumber(firstNumber);
         newNumber.AddNumber(seconNumber);
         return newNumber;
     }
 }
示例#3
0
 private static LongNumber FromLongNumber(LongNumber number)
 {
     if (number == null)
     {
         return null;
     }
     else
     {
         return new LongNumber(number);
     }
 }
示例#4
0
 private LongNumber(LongNumber number)
 {
     this.B = number.B;
     this.A = LongNumber.FromLongNumber(number.A);
 }
示例#5
0
 private void Multiply(LongNumber number)
 {
 }
示例#6
0
        private void Multiply(long number)
        {
            if (this.A != null)
            {
                this.A.Multiply(number);
            }

            if (number / X != 0)
            {
                LongNumber longNumber = new LongNumber(number);
                longNumber.Multiply(this.B);
                this.B = 0;
                this.AddNumber(longNumber);
            }
            else
            {
                checked
                {
                    long multiplicationResult = this.B * number;
                    this.B = multiplicationResult % X;
                    if (multiplicationResult / X != 0)
                    {
                        if (this.A == null)
                        {
                            this.A = new LongNumber(multiplicationResult / X);
                        }
                        else
                        {
                            this.A.AddNumber(multiplicationResult / X);
                        }
                    }
                }
            }
        }
示例#7
0
 private void AddNumber(LongNumber number)
 {
     if (number.A != null)
     {
         if (this.A == null)
         {
             this.A = new LongNumber(0);
         }
         this.A.AddNumber(number.A);
     }
     this.AddNumber(number.B);
 }
示例#8
0
 private void AddNumber(long number)
 {
     if ((this.B + number) % X == this.B + number)
     {
         this.B += number;
     }
     else
     {
         long toA = number / X;
         long smallNumber = number % X;
         long oldB = this.B;
         this.B = (oldB + smallNumber) % X;
         toA += (oldB + smallNumber) / X;
         if (A == null)
         {
             this.A = new LongNumber(toA);
         }
         else
         {
             this.A.AddNumber(toA);
         }
     }
 }