/// <summary> /// Разложение на простые сомножетили по методу Ро-Полланда /// </summary> /// <param name="n"></param> /// <returns></returns> private BigInteger RhoPollard(BigInteger n) { BigInteger x = BigInteger.GenerateRandom(32); BigInteger y = 1; int i = 0; int stage = 2; while (n.GCD(x > y ? x - y : y - x) == 1) { if (i == stage) { y = x; stage = stage * 2; } x = (x * x + 1) % n; i = i + 1; } return n.GCD(x > y ? x - y : y - x); }