]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - contrib/groff/src/libs/libgroff/prime.cpp
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / contrib / groff / src / libs / libgroff / prime.cpp
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 }