Stern-Brocot sequence: Difference between revisions
Content added Content deleted
(Added Easylang) |
Not a robot (talk | contribs) (Add Refal) |
||
Line 5,689: | Line 5,689: | ||
True</pre> |
True</pre> |
||
=={{header|Refal}}== |
|||
<syntaxhighlight lang="refal">$ENTRY Go { |
|||
, <Stern 1300>: e.Seq |
|||
= <Prout 'First 15: ' <Take 15 e.Seq>> |
|||
<ForEach (<Iota 1 10>) ShowFirst e.Seq> |
|||
<ShowFirst 100 e.Seq> |
|||
<Prout <GcdPairCheck <Take 1000 e.Seq>>>; |
|||
}; |
|||
Stern { |
|||
s.N = <Stern <- s.N 2> (1) 1>; |
|||
0 (e.X) e.Y = e.X e.Y; |
|||
s.N (e.X s.P) s.C e.Y, |
|||
<- s.N 1>: s.Rem, |
|||
<+ s.P s.C>: s.CSum |
|||
= <Stern s.Rem (e.X s.P s.C) e.Y s.CSum s.C>; |
|||
}; |
|||
Take { |
|||
0 e.X = ; |
|||
s.N s.I e.X = s.I <Take <- s.N 1> e.X>; |
|||
}; |
|||
FindFirst { |
|||
s.I e.X = <FindFirst (1) s.I e.X>; |
|||
(s.L) s.I s.I e.X = s.L; |
|||
(s.L) s.I s.J e.X = <FindFirst (<+ s.L 1>) s.I e.X>; |
|||
}; |
|||
ShowFirst { |
|||
s.I e.X, <FindFirst s.I e.X>: s.N = <Prout 'First ' s.I 'at ' s.N>; |
|||
}; |
|||
ForEach { |
|||
() s.F e.Arg = ; |
|||
(s.I e.X) s.F e.Arg = <Mu s.F s.I e.Arg> <ForEach (e.X) s.F e.Arg>; |
|||
}; |
|||
Iota { |
|||
s.From s.To = <Iota s.From s.To s.From>; |
|||
s.From s.To s.To = s.To; |
|||
s.From s.To s.Cur = s.Cur <Iota s.From s.To <+ s.Cur 1>>; |
|||
}; |
|||
Gcd { |
|||
s.N 0 = s.N; |
|||
s.N s.M = <Gcd s.M <Mod s.N s.M>>; |
|||
}; |
|||
GcdPairCheck { |
|||
s.A s.B e.X, <Gcd s.A s.B>: 1 |
|||
= <GcdPairCheck s.B e.X>; |
|||
s.A s.B e.X, <Gcd s.A s.B>: s.N |
|||
= 'The GCD of ' <Symb s.A> ' and ' <Symb s.B> ' is ' <Symb s.N>; |
|||
e.X = 'The GCDs of all adjacent pairs are 1.'; |
|||
};</syntaxhighlight> |
|||
{{out}} |
|||
<pre>First 15: 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 |
|||
First 1 at 1 |
|||
First 2 at 3 |
|||
First 3 at 5 |
|||
First 4 at 9 |
|||
First 5 at 11 |
|||
First 6 at 33 |
|||
First 7 at 19 |
|||
First 8 at 21 |
|||
First 9 at 35 |
|||
First 10 at 39 |
|||
First 100 at 1179 |
|||
The GCDs of all adjacent pairs are 1.</pre> |
|||
=={{header|REXX}}== |
=={{header|REXX}}== |
||
<syntaxhighlight lang="rexx">/*REXX program generates & displays a Stern─Brocot sequence; finds 1─based indices; GCDs*/ |
<syntaxhighlight lang="rexx">/*REXX program generates & displays a Stern─Brocot sequence; finds 1─based indices; GCDs*/ |