public void GivenNumberWithSamePrimeFactors_WhenFactoring_ThenFactorsOfThatNumberShouldBeReturned() { var factors = new Factoring().GetFactors(9).ToArray(); Assert.AreEqual(2, factors.Length); Assert.AreEqual((ulong)3, factors.First()); Assert.AreEqual((ulong)3, factors.Skip(1).First()); }
private static bool IsSmith(long l) { if (l.IsPrime()) { return(false); } var digitSum = l.ToString().Select(c => c - '0').Sum(); var factorSum = Factoring.Factor(l).Sum( factor => factor.Exp * factor.Prime.ToString().Select(c => c - '0').Sum()); return(factorSum == digitSum); }
public void GivenNumberWithSeveralFactors_WhenFactoring_ThenFactorsOfThatNumberShouldBeReturned() { var expectedFactors = new ulong[] { 2, 2, 3, 5, 11, 11, 13, 17, 53 }; var value = expectedFactors.Aggregate<ulong, ulong>(1, (current, factor) => current * factor); var factors = new Factoring().GetFactors(value).ToArray(); for (var i = 0; i < expectedFactors.Length; i++) { Assert.AreEqual(expectedFactors[i], factors[i]); } }
private static bool IsDivisible(int n, int m) { foreach (var factor in Factoring.Factor(n)) { var val = (int)factor.Prime; var valPower = val; var expInFactorial = 0; while (valPower <= m) { expInFactorial += m / valPower; valPower *= val; } if (expInFactorial < factor.Exp) { return(false); } } return(true); }
static void Main(string[] args) { long numberToFactor = 45; long nTrials = 100; bool useRobustPhaseEstimation = true; for (int i = 0; i < nTrials; ++i) { try { using (QuantumSimulator sim = new QuantumSimulator()) { Console.WriteLine($"=========================================="); Console.WriteLine($"Number to be Factored {numberToFactor}"); (long factor1, long factor2) = Factoring.Run(sim, numberToFactor, useRobustPhaseEstimation).Result; Console.WriteLine($"Factors of {numberToFactor} are {factor1} and {factor2}"); } } catch (AggregateException e) { Console.WriteLine($"Factorization of number has failed:"); foreach (Exception eInner in e.InnerExceptions) { if (eInner is ExecutionFailException failException) { Console.WriteLine($" {failException.Message}"); } } } } }
public void GivenPrimeNumber_WhenFactoring_ThenPrimeNumberShouldBeReturned() { const ulong expected = 2; var factors = new Factoring().GetFactors(expected).ToArray(); Assert.AreEqual(expected, factors.Single()); }
public EventsController() { _uow = new UnitOfWork(new Event_Manager_DbContext()); _factory = new Factoring(); }