xref: /netbsd-src/external/gpl2/groff/dist/src/libs/libgroff/prime.cpp (revision 89a07cf815a29524268025a1139fac4c5190f765)
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)5 int 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