Initial import from FreeBSD RELENG_4:
[dragonfly.git] / contrib / groff / src / libs / libgroff / prime.cc
1 #include <math.h>
2
3 int is_prime(unsigned n)
4 {
5   if (n <= 3)
6     return 1;
7   if (!(n & 1))
8     return 0;
9   if (n % 3 == 0)
10     return 0;
11   unsigned lim = unsigned(sqrt((double)n));
12   unsigned d = 5;
13   for (;;) {
14     if (d > lim)
15       break;
16     if (n % d == 0)
17       return 0;
18     d += 2;
19     if (d > lim)
20       break;
21     if (n % d == 0)
22       return 0;
23     d += 4;
24   }
25   return 1;
26 }