1 /* $NetBSD: prime.cpp,v 1.1.1.1 2016/01/13 18:41:48 christos Exp $ */ 2 3 #include <math.h> 4 is_prime(unsigned n)5int is_prime(unsigned n) 6 { 7 if (n <= 3) 8 return 1; 9 if (!(n & 1)) 10 return 0; 11 if (n % 3 == 0) 12 return 0; 13 unsigned lim = unsigned(sqrt((double)n)); 14 unsigned d = 5; 15 for (;;) { 16 if (d > lim) 17 break; 18 if (n % d == 0) 19 return 0; 20 d += 2; 21 if (d > lim) 22 break; 23 if (n % d == 0) 24 return 0; 25 d += 4; 26 } 27 return 1; 28 } 29