public static BigInt Multiply(BigInt number1, BigInt number2) { BigInt result = new BigInt("0", false); int length = number1.number.Length; if (number1.number.Length < number2.number.Length) { length = number2.number.Length; } StringBuilder sbNum1 = new StringBuilder(); for (int i = 0; i < length - number1.Number.Length; i++) { sbNum1.Append("0"); } sbNum1.Append(number1.number); StringBuilder sbNum2 = new StringBuilder(); for (int i = 0; i < length - number2.Number.Length; i++) { sbNum2.Append("0"); } sbNum2.Append(number2.number); for (int i = 0; i < length; i++) { StringBuilder sb = new StringBuilder(); sb.Clear(); int a = int.Parse(sbNum1[length - 1 - i].ToString()); sb.Append(sbNum2.ToString()); for (int j = 0; j < i; j++) { sb.Append("0"); } for (int k = 0; k < a; k++) { result = Sum(result, new BigInt(sb.ToString(), false)); } } if (number1.IsNegative != number2.IsNegative) { result.IsNegative = true; } result = BigInt.TrimZeros(result); return(result); }