Triplet of three numbers: Difference between revisions

From Rosetta Code
Content added Content deleted
(Add BASIC)
(Add Cowgol)
Line 225: Line 225:
5654: 5653, 5657, 5659
5654: 5653, 5657, 5659
5738: 5737, 5741, 5743</pre>
5738: 5737, 5741, 5743</pre>
=={{header|Cowgol}}==
<lang cowgol>include "cowgol.coh";

const LIMIT := 6000;

var prime: uint8[LIMIT+5];
var i: @indexof prime;
var j: @indexof prime;

prime[0] := 0;
prime[1] := 0;
MemSet(&prime[2], 1, @bytesof prime-2);
i := 2;
while i <= @sizeof prime/2-1 loop
if prime[i] != 0 then
j := i*2;
while j <= @sizeof prime-1 loop
prime[j] := 0;
j := j+i;
end loop;
end if;
i := i+1;
end loop;

i := 2;
while i < LIMIT loop
if prime[i-1] & prime[i+3] & prime[i+5] != 0 then
print_i32(i as uint32);
print(": ");
print_i32(i as uint32-1);
print(", ");
print_i32(i as uint32+3);
print(", ");
print_i32(i as uint32+5);
print_nl();
end if;
i := i + 1;
end loop;</lang>
{{out}}
<pre style='height:50ex'>8: 7, 11, 13
14: 13, 17, 19
38: 37, 41, 43
68: 67, 71, 73
98: 97, 101, 103
104: 103, 107, 109
194: 193, 197, 199
224: 223, 227, 229
278: 277, 281, 283
308: 307, 311, 313
458: 457, 461, 463
614: 613, 617, 619
824: 823, 827, 829
854: 853, 857, 859
878: 877, 881, 883
1088: 1087, 1091, 1093
1298: 1297, 1301, 1303
1424: 1423, 1427, 1429
1448: 1447, 1451, 1453
1484: 1483, 1487, 1489
1664: 1663, 1667, 1669
1694: 1693, 1697, 1699
1784: 1783, 1787, 1789
1868: 1867, 1871, 1873
1874: 1873, 1877, 1879
1994: 1993, 1997, 1999
2084: 2083, 2087, 2089
2138: 2137, 2141, 2143
2378: 2377, 2381, 2383
2684: 2683, 2687, 2689
2708: 2707, 2711, 2713
2798: 2797, 2801, 2803
3164: 3163, 3167, 3169
3254: 3253, 3257, 3259
3458: 3457, 3461, 3463
3464: 3463, 3467, 3469
3848: 3847, 3851, 3853
4154: 4153, 4157, 4159
4514: 4513, 4517, 4519
4784: 4783, 4787, 4789
5228: 5227, 5231, 5233
5414: 5413, 5417, 5419
5438: 5437, 5441, 5443
5648: 5647, 5651, 5653
5654: 5653, 5657, 5659
5738: 5737, 5741, 5743</lang>

=={{header|Julia}}==
=={{header|Julia}}==
<lang julia>using Primes
<lang julia>using Primes

Revision as of 20:43, 17 May 2021

Triplet of three numbers is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
Task

Numbers n such that the three numbers n-1, n+3 and n+5 are all prime. where n < 6000


BASIC

<lang basic>10 DEFINT A-Z: N=6000 20 DIM P(N+5) 30 FOR I=2 TO SQR(N) 40 IF NOT P(I) THEN FOR J=I*2 TO N STEP I: P(J)=1: NEXT 50 NEXT 60 FOR I=3 TO N 70 IF P(I-1) OR P(I+3) OR P(I+5) GOTO 90 80 PRINT USING "####,: ####, ####, ####,";I;I-1;I+3;I+5 90 NEXT</lang>

Output:
    8:     7    11    13
   14:    13    17    19
   38:    37    41    43
   68:    67    71    73
   98:    97   101   103
  104:   103   107   109
  194:   193   197   199
  224:   223   227   229
  278:   277   281   283
  308:   307   311   313
  458:   457   461   463
  614:   613   617   619
  824:   823   827   829
  854:   853   857   859
  878:   877   881   883
1,088: 1,087 1,091 1,093
1,298: 1,297 1,301 1,303
1,424: 1,423 1,427 1,429
1,448: 1,447 1,451 1,453
1,484: 1,483 1,487 1,489
1,664: 1,663 1,667 1,669
1,694: 1,693 1,697 1,699
1,784: 1,783 1,787 1,789
1,868: 1,867 1,871 1,873
1,874: 1,873 1,877 1,879
1,994: 1,993 1,997 1,999
2,084: 2,083 2,087 2,089
2,138: 2,137 2,141 2,143
2,378: 2,377 2,381 2,383
2,684: 2,683 2,687 2,689
2,708: 2,707 2,711 2,713
2,798: 2,797 2,801 2,803
3,164: 3,163 3,167 3,169
3,254: 3,253 3,257 3,259
3,458: 3,457 3,461 3,463
3,464: 3,463 3,467 3,469
3,848: 3,847 3,851 3,853
4,154: 4,153 4,157 4,159
4,514: 4,513 4,517 4,519
4,784: 4,783 4,787 4,789
5,228: 5,227 5,231 5,233
5,414: 5,413 5,417 5,419
5,438: 5,437 5,441 5,443
5,648: 5,647 5,651 5,653
5,654: 5,653 5,657 5,659
5,738: 5,737 5,741 5,743

BCPL

<lang bcpl>get "libhdr" manifest $( limit = 6000 $)

let sieve(p, n) be $( p!0 := false

   p!1 := false
   for i=2 to n do p!i := true
   for i=2 to n/2
       if p!i
       $(  let j = i*2
           while j <= n
           $(  p!j := false
               j := j+i
           $)
       $)

$)

let triplet(p, n) = n>=2 & p!(n-1) & p!(n+3) & p!(n+5)

let start() be $( let prime = getvec(limit)

   sieve(prime, limit)
   for i=2 to limit
       if triplet(prime, i) do
           writef("%I4: %I4, %I4, %I4*N", i, i-1, i+3, i+5)
   freevec(prime)

$)</lang>

Output:
   8:    7,   11,   13
  14:   13,   17,   19
  38:   37,   41,   43
  68:   67,   71,   73
  98:   97,  101,  103
 104:  103,  107,  109
 194:  193,  197,  199
 224:  223,  227,  229
 278:  277,  281,  283
 308:  307,  311,  313
 458:  457,  461,  463
 614:  613,  617,  619
 824:  823,  827,  829
 854:  853,  857,  859
 878:  877,  881,  883
1088: 1087, 1091, 1093
1298: 1297, 1301, 1303
1424: 1423, 1427, 1429
1448: 1447, 1451, 1453
1484: 1483, 1487, 1489
1664: 1663, 1667, 1669
1694: 1693, 1697, 1699
1784: 1783, 1787, 1789
1868: 1867, 1871, 1873
1874: 1873, 1877, 1879
1994: 1993, 1997, 1999
2084: 2083, 2087, 2089
2138: 2137, 2141, 2143
2378: 2377, 2381, 2383
2684: 2683, 2687, 2689
2708: 2707, 2711, 2713
2798: 2797, 2801, 2803
3164: 3163, 3167, 3169
3254: 3253, 3257, 3259
3458: 3457, 3461, 3463
3464: 3463, 3467, 3469
3848: 3847, 3851, 3853
4154: 4153, 4157, 4159
4514: 4513, 4517, 4519
4784: 4783, 4787, 4789
5228: 5227, 5231, 5233
5414: 5413, 5417, 5419
5438: 5437, 5441, 5443
5648: 5647, 5651, 5653
5654: 5653, 5657, 5659
5738: 5737, 5741, 5743

C

<lang c>#include <stdio.h>

  1. include <stdlib.h>
  2. include <string.h>
  3. include <math.h>
  1. define LIMIT 6000

char *primes(unsigned int limit) {

   char *p = malloc(limit + 1);
   int i, j, sqr = sqrt(limit);
   
   p[0] = p[1] = 0;
   memset(p+2, 1, limit-1);
   for (i=2; i<=sqr; i++)
       if (p[i])
           for (j=i*2; j<=limit; j+=i)
               p[j] = 0;
           
   return p;

}

int triplet(const char *p, unsigned int n) {

   return n >= 2 && p[n-1] && p[n+3] && p[n+5];

}

int main() {

   char *p = primes(LIMIT+5);
   int i;
   
   for (i=2; i<LIMIT; i++)
       if (triplet(p, i))
           printf("%4d: %4d, %4d, %4d\n", i, i-1, i+3, i+5);
   
   free(p);
   return 0;

}</lang>

Output:
   8:    7,   11,   13
  14:   13,   17,   19
  38:   37,   41,   43
  68:   67,   71,   73
  98:   97,  101,  103
 104:  103,  107,  109
 194:  193,  197,  199
 224:  223,  227,  229
 278:  277,  281,  283
 308:  307,  311,  313
 458:  457,  461,  463
 614:  613,  617,  619
 824:  823,  827,  829
 854:  853,  857,  859
 878:  877,  881,  883
1088: 1087, 1091, 1093
1298: 1297, 1301, 1303
1424: 1423, 1427, 1429
1448: 1447, 1451, 1453
1484: 1483, 1487, 1489
1664: 1663, 1667, 1669
1694: 1693, 1697, 1699
1784: 1783, 1787, 1789
1868: 1867, 1871, 1873
1874: 1873, 1877, 1879
1994: 1993, 1997, 1999
2084: 2083, 2087, 2089
2138: 2137, 2141, 2143
2378: 2377, 2381, 2383
2684: 2683, 2687, 2689
2708: 2707, 2711, 2713
2798: 2797, 2801, 2803
3164: 3163, 3167, 3169
3254: 3253, 3257, 3259
3458: 3457, 3461, 3463
3464: 3463, 3467, 3469
3848: 3847, 3851, 3853
4154: 4153, 4157, 4159
4514: 4513, 4517, 4519
4784: 4783, 4787, 4789
5228: 5227, 5231, 5233
5414: 5413, 5417, 5419
5438: 5437, 5441, 5443
5648: 5647, 5651, 5653
5654: 5653, 5657, 5659
5738: 5737, 5741, 5743

Cowgol

<lang cowgol>include "cowgol.coh";

const LIMIT := 6000;

var prime: uint8[LIMIT+5]; var i: @indexof prime; var j: @indexof prime;

prime[0] := 0; prime[1] := 0; MemSet(&prime[2], 1, @bytesof prime-2); i := 2; while i <= @sizeof prime/2-1 loop

   if prime[i] != 0 then
       j := i*2;
       while j <= @sizeof prime-1 loop
           prime[j] := 0;
           j := j+i;
       end loop;
   end if;
   i := i+1;

end loop;

i := 2; while i < LIMIT loop

   if prime[i-1] & prime[i+3] & prime[i+5] != 0 then
       print_i32(i as uint32);
       print(": ");
       print_i32(i as uint32-1);
       print(", ");
       print_i32(i as uint32+3);
       print(", ");
       print_i32(i as uint32+5);
       print_nl();
   end if;
   i := i + 1;

end loop;</lang>

Output:
8: 7, 11, 13
14: 13, 17, 19
38: 37, 41, 43
68: 67, 71, 73
98: 97, 101, 103
104: 103, 107, 109
194: 193, 197, 199
224: 223, 227, 229
278: 277, 281, 283
308: 307, 311, 313
458: 457, 461, 463
614: 613, 617, 619
824: 823, 827, 829
854: 853, 857, 859
878: 877, 881, 883
1088: 1087, 1091, 1093
1298: 1297, 1301, 1303
1424: 1423, 1427, 1429
1448: 1447, 1451, 1453
1484: 1483, 1487, 1489
1664: 1663, 1667, 1669
1694: 1693, 1697, 1699
1784: 1783, 1787, 1789
1868: 1867, 1871, 1873
1874: 1873, 1877, 1879
1994: 1993, 1997, 1999
2084: 2083, 2087, 2089
2138: 2137, 2141, 2143
2378: 2377, 2381, 2383
2684: 2683, 2687, 2689
2708: 2707, 2711, 2713
2798: 2797, 2801, 2803
3164: 3163, 3167, 3169
3254: 3253, 3257, 3259
3458: 3457, 3461, 3463
3464: 3463, 3467, 3469
3848: 3847, 3851, 3853
4154: 4153, 4157, 4159
4514: 4513, 4517, 4519
4784: 4783, 4787, 4789
5228: 5227, 5231, 5233
5414: 5413, 5417, 5419
5438: 5437, 5441, 5443
5648: 5647, 5651, 5653
5654: 5653, 5657, 5659
5738: 5737, 5741, 5743</lang>

=={{header|Julia}}==
<lang julia>using Primes

makesprimetriplet(n) = all(isprime, [n - 1, n + 3, n + 5])
println(" N       Prime Triplet\n--------------------------")
foreach(n -> println(rpad(n, 6), [n - 1, n + 1, n + 5]), filter(makesprimetriplet, 2:6005))
</lang>{{out}}
<pre>
 N       Prime Triplet
--------------------------
8     [7, 9, 13]
14    [13, 15, 19]
38    [37, 39, 43]
68    [67, 69, 73]
98    [97, 99, 103]
104   [103, 105, 109]
194   [193, 195, 199]
224   [223, 225, 229]
278   [277, 279, 283]
308   [307, 309, 313]
458   [457, 459, 463]
614   [613, 615, 619]
824   [823, 825, 829]
854   [853, 855, 859]
878   [877, 879, 883]
1088  [1087, 1089, 1093]
1298  [1297, 1299, 1303]
1424  [1423, 1425, 1429]
1448  [1447, 1449, 1453]
1484  [1483, 1485, 1489]
1664  [1663, 1665, 1669]
1694  [1693, 1695, 1699]
1784  [1783, 1785, 1789]
1868  [1867, 1869, 1873]
1874  [1873, 1875, 1879]
1994  [1993, 1995, 1999]
2084  [2083, 2085, 2089]
2138  [2137, 2139, 2143]
2378  [2377, 2379, 2383]
2684  [2683, 2685, 2689]
2708  [2707, 2709, 2713]
2798  [2797, 2799, 2803]
3164  [3163, 3165, 3169]
3254  [3253, 3255, 3259]
3458  [3457, 3459, 3463]
3464  [3463, 3465, 3469]
3848  [3847, 3849, 3853]
4154  [4153, 4155, 4159]
4514  [4513, 4515, 4519]
4784  [4783, 4785, 4789]
5228  [5227, 5229, 5233]
5414  [5413, 5415, 5419]
5438  [5437, 5439, 5443]
5648  [5647, 5649, 5653]
5654  [5653, 5655, 5659]
5738  [5737, 5739, 5743]

Phix

function trio(integer n) return sum(apply({n-1,n+3,n+5},is_prime))=3 end function
sequence res = filter(tagset(6000),trio)
printf(1,"%d found: %V\n",{length(res),shorten(res,"",5)})
Output:
46 found: {8,14,38,68,98,"...",5414,5438,5648,5654,5738}

Raku

A weird combination of Cousin primes and Twin primes that are siblings, but known by their neighbor.... I shall dub these Alabama primes.

<lang perl6>say "{.[0]+1}: ",$_ for grep *.all.is-prime, ^6000 .race.map: { $_-1, $_+3, $_+5 };</lang>

Output:
8: (7 11 13)
14: (13 17 19)
38: (37 41 43)
68: (67 71 73)
98: (97 101 103)
104: (103 107 109)
194: (193 197 199)
224: (223 227 229)
278: (277 281 283)
308: (307 311 313)
458: (457 461 463)
614: (613 617 619)
824: (823 827 829)
854: (853 857 859)
878: (877 881 883)
1088: (1087 1091 1093)
1298: (1297 1301 1303)
1424: (1423 1427 1429)
1448: (1447 1451 1453)
1484: (1483 1487 1489)
1664: (1663 1667 1669)
1694: (1693 1697 1699)
1784: (1783 1787 1789)
1868: (1867 1871 1873)
1874: (1873 1877 1879)
1994: (1993 1997 1999)
2084: (2083 2087 2089)
2138: (2137 2141 2143)
2378: (2377 2381 2383)
2684: (2683 2687 2689)
2708: (2707 2711 2713)
2798: (2797 2801 2803)
3164: (3163 3167 3169)
3254: (3253 3257 3259)
3458: (3457 3461 3463)
3464: (3463 3467 3469)
3848: (3847 3851 3853)
4154: (4153 4157 4159)
4514: (4513 4517 4519)
4784: (4783 4787 4789)
5228: (5227 5231 5233)
5414: (5413 5417 5419)
5438: (5437 5441 5443)
5648: (5647 5651 5653)
5654: (5653 5657 5659)
5738: (5737 5741 5743)

Ring

<lang ring> load "stdlib.ring" see "working..." + nl see "n prime triplet" + nl see "----------------" + nl row = 0

limit = 6000

for n = 2 to limit-2

   bool1 = isprime(n-1)
   bool2 = isprime(n+3)
   bool3 = isprime(n+5)
   bool = bool1 and bool2 and bool3
   if bool
      row = row + 1 
      see "" + n + ": (" + (n-1) + " " + (n+3) + " " + (n+5) + ")" + nl
   ok

next

see "Found " + row + " primes" + nl see "done..." + nl </lang>

Output:
working...
n  prime triplet
----------------
8: (7 11 13)
14: (13 17 19)
38: (37 41 43)
68: (67 71 73)
98: (97 101 103)
104: (103 107 109)
194: (193 197 199)
224: (223 227 229)
278: (277 281 283)
308: (307 311 313)
458: (457 461 463)
614: (613 617 619)
824: (823 827 829)
854: (853 857 859)
878: (877 881 883)
1088: (1087 1091 1093)
1298: (1297 1301 1303)
1424: (1423 1427 1429)
1448: (1447 1451 1453)
1484: (1483 1487 1489)
1664: (1663 1667 1669)
1694: (1693 1697 1699)
1784: (1783 1787 1789)
1868: (1867 1871 1873)
1874: (1873 1877 1879)
1994: (1993 1997 1999)
2084: (2083 2087 2089)
2138: (2137 2141 2143)
2378: (2377 2381 2383)
2684: (2683 2687 2689)
2708: (2707 2711 2713)
2798: (2797 2801 2803)
3164: (3163 3167 3169)
3254: (3253 3257 3259)
3458: (3457 3461 3463)
3464: (3463 3467 3469)
3848: (3847 3851 3853)
4154: (4153 4157 4159)
4514: (4513 4517 4519)
4784: (4783 4787 4789)
5228: (5227 5231 5233)
5414: (5413 5417 5419)
5438: (5437 5441 5443)
5648: (5647 5651 5653)
5654: (5653 5657 5659)
5738: (5737 5741 5743)
Found 46 primes
done...

Wren

Library: Wren-math
Library: Wren-fmt

<lang ecmascript>import "/math" for Int import "/fmt" for Fmt

var c = Int.primeSieve(6003, false) var numbers = [] System.print("Numbers n < 6000 where: n - 1, n + 3, n + 5 are all primes:") var n = 4 while (n < 6000) {

   if (!c[n-1] && !c[n+3] && !c[n+5]) numbers.add(n)
   n = n + 2

} for (n in numbers) Fmt.print("$,6d => $,6d", n, [n-1, n+3, n+5]) System.print("\nFound %(numbers.count) such numbers.")</lang>

Output:
Numbers n < 6000 where: n - 1, n + 3, n + 5 are all primes:
     8  =>      7     11     13
    14  =>     13     17     19
    38  =>     37     41     43
    68  =>     67     71     73
    98  =>     97    101    103
   104  =>    103    107    109
   194  =>    193    197    199
   224  =>    223    227    229
   278  =>    277    281    283
   308  =>    307    311    313
   458  =>    457    461    463
   614  =>    613    617    619
   824  =>    823    827    829
   854  =>    853    857    859
   878  =>    877    881    883
 1,088  =>  1,087  1,091  1,093
 1,298  =>  1,297  1,301  1,303
 1,424  =>  1,423  1,427  1,429
 1,448  =>  1,447  1,451  1,453
 1,484  =>  1,483  1,487  1,489
 1,664  =>  1,663  1,667  1,669
 1,694  =>  1,693  1,697  1,699
 1,784  =>  1,783  1,787  1,789
 1,868  =>  1,867  1,871  1,873
 1,874  =>  1,873  1,877  1,879
 1,994  =>  1,993  1,997  1,999
 2,084  =>  2,083  2,087  2,089
 2,138  =>  2,137  2,141  2,143
 2,378  =>  2,377  2,381  2,383
 2,684  =>  2,683  2,687  2,689
 2,708  =>  2,707  2,711  2,713
 2,798  =>  2,797  2,801  2,803
 3,164  =>  3,163  3,167  3,169
 3,254  =>  3,253  3,257  3,259
 3,458  =>  3,457  3,461  3,463
 3,464  =>  3,463  3,467  3,469
 3,848  =>  3,847  3,851  3,853
 4,154  =>  4,153  4,157  4,159
 4,514  =>  4,513  4,517  4,519
 4,784  =>  4,783  4,787  4,789
 5,228  =>  5,227  5,231  5,233
 5,414  =>  5,413  5,417  5,419
 5,438  =>  5,437  5,441  5,443
 5,648  =>  5,647  5,651  5,653
 5,654  =>  5,653  5,657  5,659
 5,738  =>  5,737  5,741  5,743

Found 46 such numbers.