1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#include <math.h> int is_prime(unsigned n) { if (n <= 3) return 1; if (!(n & 1)) return 0; if (n % 3 == 0) return 0; unsigned lim = unsigned(sqrt((double)n)); unsigned d = 5; for (;;) { if (d > lim) break; if (n % d == 0) return 0; d += 2; if (d > lim) break; if (n % d == 0) return 0; d += 4; } return 1; }