public Decomposition GetCopy() { var result = new Decomposition(Number); result.KindsMasses = new List <long>(KindsMasses.GetRange(0, KindsMasses.Count)); return(result); }
public void ProlongWith(long divisor, Decomposition decomposition) { if (KindsCount < 1) { throw new InvalidOperationException("cannot prolong empty decomposition"); } KindsMasses[KindsCount - 1] = divisor; KindsMasses.AddRange(decomposition.KindsMasses); }
public CalculationResult ToCalculationResult() { long[] numbers = new long[KindsCount]; for (int i = 0; i != KindsCount; ++i) { numbers[i] = KindsMasses .Take(i + 1) .Aggregate((total, next) => total * next); } return(new CalculationResult { KindsCount = KindsCount, Numbers = numbers }); }