Yellowstone sequence: Difference between revisions
Content added Content deleted
m (→{{header|REXX}}: added wording to the output sections.) |
(added Tcl) |
||
Line 995: | Line 995: | ||
[1, 2, 3, 4, 9, 8, 15, 14, 5, 6, 25, 12, 35, 16, 7, 10, 21, 20, 27, 22, 39, 11, 13, 33, 26, 45, 28, 51, 32, 17] |
[1, 2, 3, 4, 9, 8, 15, 14, 5, 6, 25, 12, 35, 16, 7, 10, 21, 20, 27, 22, 39, 11, 13, 33, 26, 45, 28, 51, 32, 17] |
||
</pre> |
</pre> |
||
=={{header|Tcl}}== |
|||
<lang Tcl>proc gcd {a b} { |
|||
while {$b} { |
|||
lassign [list $b [expr {$a % $b}]] a b |
|||
} |
|||
return $a |
|||
} |
|||
proc gen_yellowstones {{maxN 30}} { |
|||
set r {} |
|||
for {set n 1} {$n <= $maxN} {incr n} { |
|||
if {$n <= 3} { |
|||
lappend r $n |
|||
} else { |
|||
## NB: list indices start at 0, not 1. |
|||
set pred [lindex $r end ] ;# a(n-1): coprime |
|||
set prepred [lindex $r end-1] ;# a(n-2): not coprime |
|||
for {set k 4} {1} {incr k} { |
|||
if {[lsearch -exact $r $k] >= 0} { continue } |
|||
if {1 != [gcd $k $pred ]} { continue } |
|||
if {1 == [gcd $k $prepred]} { continue } |
|||
## candidate k survived all tests... |
|||
break |
|||
} |
|||
lappend r $k |
|||
} |
|||
} |
|||
return $r |
|||
} |
|||
puts "The first 30 Yellowstone numbers are:" |
|||
puts [gen_yellowstones]</lang> |
|||
{{out}} |
|||
The first 30 Yellowstone numbers are: |
|||
1 2 3 4 9 8 15 14 5 6 25 12 35 16 7 10 21 20 27 22 39 11 13 33 26 45 28 51 32 17 |
|||
=={{header|zkl}}== |
=={{header|zkl}}== |