#include #include #define ll long long /* * modular exponentiation */ll modulo(ll base, ll exponent, ll mod) { ll x = 1; ll y = base; while (exponent > 0) { if (exponent % 2 == 1) x = (x * y) % mod; y = (y * y) % mod; exponent = exponent / 2; } return x % mod; } /* * Fermat's test for checking primality */ int Fermat(ll p, int iterations) { int i; if (p == 1) { return 0; } for (i = 0; i < iterations; i++) { ll a = rand() % (p - 1) + 1; if (modulo(a, p - 1, p) != 1) { return 0; } } return 1; } /* * Main */ int main() { int iteration = 50; ll num; printf("Enter integer to test primality: "); scanf("%lld", &num); if (Fermat(num, iteration) == 1) printf("%lld is prime ", num); else printf("%lld is not prime ", num); return 0; }