public static void Main()
bool prime = isPrime(num, tries);
Console.WriteLine("{0} is {1}a prime number.", num, prime ? "" : "not ");
public static decimal YthPowerOfX(int x, int y)
string binary = Convert.ToString(y, 2);
decimal power = binary[binary.Length - 1] == '1' ? x : 1;
for (int i = binary.Length - 2; i >= 0; i--)
public static bool isPrime(decimal num, int maxTries)
for (int i = 0; i <= maxTries; i++)
Random rand = new Random();
int r = rand.Next(1, (int)num);
decimal power = YthPowerOfX(r, (int)num - 1);
Console.WriteLine($"{r}^{num-1} => {power} % {num} = {power % num}");