public List <BigInt> Factors() { List <BigInt> fact = new List <BigInt>(); BigInt prime = 2; BigInt remainder; BigInt divided = this; BigInt quotent = divided.Div(prime, out remainder); while (remainder.IsZero) { divided = quotent; fact.Add(prime); quotent = divided.Div(prime, out remainder); } prime += 1; while (prime <= divided) { quotent = divided.Div(prime, out remainder); while (remainder.IsZero) { divided = quotent; fact.Add(prime); quotent = divided.Div(prime, out remainder); } prime += 2; } return(fact); }