Miller–Rabin primality test: Difference between revisions

m (Fix link to Wikipedia's article history. Wikipedia uses a different page name with a different hyphen. (Unicode has more than one hyphen?))
Line 402:
public static class RabinMiller
{
public static bool isPrimeIsPrime(int p)
{
if(p < 2)
{
return false;
}
if(p != 2 && p % 2 == 0)
{
return false;
}
int s = p - 1;
while(s % 2 == 0)
{
s >>= 1;
}
Random r = new Random();
for (int i = 1; i < 11; i++)
{
double a = r.Next((int)p - 1) + 1;
int temp = s;
int mod = (int)Math.Pow(a, (double)temp) % p;
while(temp != p - 1 && mod != 1 && mod != p - 1)
{
mod = (mod * mod) % p;
temp = temp * 2;
}
if(mod != p - 1 && temp % 2 == 0)
{
return false;
Anonymous user