Merge from vendor branch BINUTILS:
[dragonfly.git] / contrib / bc / Examples / twins.b
1
2 /* An example that finds all primes between 2 and limit. */
3
4 define primes (limit) {
5     auto num, p, root, i
6
7     prime[1] = 2;
8     prime[2] = 3;
9     num = 2;
10     scale = 0;
11
12     for ( p=5; p <= limit; p += 2)  {
13         root = sqrt(p);
14         isprime = 1;
15         for ( i = 1;  i < num && prime[i] <= root; i++ ) {
16             if ( p % prime[i] == 0 ) {
17                 isprime = 0;
18                 break;
19             }
20         }
21         if (isprime) {
22             num += 1;
23             prime [num] = p;
24         }
25      }
26 }
27
28
29 print "\ntyping 'twins (10)' will print all twin primes less than 10.\n"
30
31 define twins (limit) {
32    auto i;
33
34    i = primes(limit+2);
35
36    for (i=1; prime[i] > 0; i++) {
37       if ((prime[i]+2) == prime[i+1]) \
38         print "twins are ", prime[i], " and ", prime[i+1], "\n"
39    }
40 }