Coprime triplets: Difference between revisions

Add Factor
m (→‎{{header|REXX}}: adjusted computation of maximum width of a column entry.)
(Add Factor)
Line 6:
<br> Let '''p, q < 50'''
<br><br>
 
=={{header|Factor}}==
{{works with|Factor|0.99 2021-02-05}}
<lang factor>USING: combinators.short-circuit.smart formatting grouping io
kernel make math prettyprint sequences sets ;
 
: coprime? ( m n -- ? ) simple-gcd 1 = ;
 
: coprime-both? ( m n o -- ? ) '[ _ coprime? ] both? ;
 
: triplet? ( hs m n o -- ? )
{ [ coprime-both? nip ] [ 2nip swap in? not ] } && ;
 
: next ( hs m n -- hs' m' n' )
0 [ 4dup triplet? ] [ 1 + ] until
nipd pick [ adjoin ] keepd ;
 
: (triplets-upto) ( n -- )
[ HS{ 1 2 } clone 1 , 1 2 ] dip
'[ 2dup [ _ < ] both? ] [ dup , next ] while 3drop ;
 
: triplets-upto ( n -- seq ) [ (triplets-upto) ] { } make ;
 
"Coprime triplets under 50:" print
50 triplets-upto
[ 9 group simple-table. nl ]
[ length "Found %d terms.\n" printf ] bi</lang>
{{out}}
<pre>
Coprime triplets under 50:
1 2 3 5 4 7 9 8 11
13 6 17 19 10 21 23 16 15
29 14 25 27 22 31 35 12 37
41 18 43 47 20 33 49 26 45
 
Found 36 terms.
</pre>
 
=={{header|FreeBASIC}}==
1,808

edits