Exemplo n.º 1
0
        public static BigInt GetNextBlumPrime(BigInt Start, bool IsP = true, int Rounds = 20)
        {
            BigInt PNext = Start.Clone();

            if (!IsP)
            {
                PNext = PNext + (PNext / 4) + 2;
            }

            //int PBitsCount = Start.BitsCount();
            if (PNext.Even())
            {
                PNext.Value[0] |= 0x01;
            }
            if (!PNext.IsProbablePrime(Rounds) || PNext % 4 != 3 || PNext == Start)
            {
                do
                {
                    PNext += 2;
                }while (!PNext.IsProbablePrime(Rounds) || PNext % 4 != 3);
            }

            return(PNext);
        }