public void TestOrderFinder(IOrderFinder orderFinder) { for (long n = 2; n < 500; n++) { for (long a = 1; a < n; a++) { if (MathUtils.GCD(a, n) != 1) { continue; } long res = orderFinder.Find(a, n); if (MathUtils.FastPowMod(a, res, n) != 1) { Assert.Fail("a^r is not congruent to one.", a, n, res, MathUtils.FastPowMod(a, res, n)); } for (int rp = 1; rp < res; rp++) { if (MathUtils.FastPowMod(a, rp, n) == 1) { Assert.Fail("There is a smaller value r\' than r with a^r\' is congruent to one", a, n, res, rp); } } } } }
public static void Init(IPrimeChecker primeChecker, IOrderFinder orderFinder) { factorizer = new Factorizer(primeChecker, orderFinder); }
public Factorizer(IPrimeChecker primeChecker, IOrderFinder orderFinder) { PrimeChecker = primeChecker; OrderFinder = orderFinder; }
public GetAwaitingOrdersQueryHandler(IOrderFinder orderFinder) { _orderFinder = orderFinder; }