Example #1
0
        public void Sum(BigInt num, int shift = 0)
        {
            byte reminder = 0;
            byte tempSum;
            int index = 0;

            if (number.Count <= num.number.Count + shift)
            {
                for (int i = shift; i < number.Count; i++)
                {
                    tempSum = (byte)(num.number[index] + number[i] + reminder);
                    reminder = AddSum(this, tempSum, i);
                    index++;
                }
                while (index < num.number.Count)
                {
                    tempSum = (byte)(num.number[index] + reminder);
                    number.Add(1);
                    reminder = AddSum(this, tempSum, this.number.Count - 1);
                    index++;
                }
                if (reminder == 1)
                {
                    number.Add(1);
                }
            }
            else
            {
                for (int i = shift; i < num.number.Count; i++)
                {
                    tempSum = (byte)(num.number[index] + number[i] + reminder);
                    reminder = AddSum(this, tempSum, i);
                    index++;
                }
                while (index < number.Count)
                {
                    tempSum = (byte)(number[index] + reminder);
                    reminder = AddSum(this, tempSum, index);
                    index++;
                }
                if (reminder == 1)
                {
                    number.Add(1);
                }
            }
        }
Example #2
0
 public void Multiply(BigInt multiplyer)
 {
     byte product;
     byte reminder;
     BigInt tempSum = new BigInt(0);
     BigInt tempProduct = new BigInt();
     for(int i = 0; i < multiplyer.number.Count; i++)
     {
         reminder = 0;
         tempProduct.number.Clear();
         foreach (byte num in number)
         {
             product = (byte)(num * multiplyer.number[i] + reminder);
             reminder = AddProduct(tempProduct, product);
         }
         if (reminder > 0)
         {
             tempProduct.number.Add(reminder);
         }
         tempSum.Sum(tempProduct, i);
     }
     number = tempSum.number;
 }
Example #3
0
 private byte AddSum(BigInt bigger, byte tempSum, int index)
 {
     if (tempSum >= 10)
     {
         bigger.number[index] = (byte)(tempSum % 10);
         return 1;
     }
     else
     {
         bigger.number[index] = tempSum;
         return 0;
     }
 }
Example #4
0
 private byte AddProduct(BigInt temp, byte product)
 {
     if (product < 10)
     {
         temp.number.Add(product);
         return 0;
     }
     else
     {
         temp.number.Add((byte)(product % 10));
         return (byte)(product / 10);
     }
 }