/// <summary> /// Creates a new Factor node /// </summary> /// <param name="value">The number value</param> public PrimeFactorNode(long value, long defaultFactor = 2) { this.Parent = null; this.Value = value; this.Children = new PrimeFactorNode[0]; this.Add(defaultFactor, value); }
/// <summary> /// Adds a new value to the node /// </summary> /// <param name="lastFactor">The last used factor</param> /// <param name="value">The value to test</param> private void Add(long lastFactor, long value) { if (lastFactor == value) { return; } else if (value % lastFactor == 0) { PrimeFactorNode n1 = new PrimeFactorNode(lastFactor, lastFactor); PrimeFactorNode n2 = new PrimeFactorNode((long)(value / lastFactor), lastFactor); n1.Parent = this; n2.Parent = this; this.Children = new PrimeFactorNode[] { n1, n2 }; } else { this.Add(lastFactor + 1, value); } }