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); }