Stern-Brocot sequence: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add SETL) |
(Added Easylang) |
||
Line 2,554: | Line 2,554: | ||
1-based index of the first occurrence of 100 in the series: 1179 |
1-based index of the first occurrence of 100 in the series: 1179 |
||
7984</pre> |
7984</pre> |
||
=={{header|EasyLang}}== |
|||
{{trans|Lua}} |
|||
<syntaxhighlight> |
|||
global sb[] . |
|||
proc sternbrocot n . . |
|||
sb[] = [ 1 1 ] |
|||
pos = 2 |
|||
repeat |
|||
c = sb[pos] |
|||
sb[] &= c + sb[pos - 1] |
|||
sb[] &= c |
|||
pos += 1 |
|||
until len sb[] >= n |
|||
. |
|||
. |
|||
func first v . |
|||
for i to len sb[] |
|||
if v <> 0 |
|||
if sb[i] = v |
|||
return i |
|||
. |
|||
else |
|||
if sb[i] <> 0 |
|||
return i |
|||
. |
|||
. |
|||
. |
|||
return 0 |
|||
. |
|||
func gcd x y . |
|||
if y = 0 |
|||
return x |
|||
. |
|||
return gcd y (x mod y) |
|||
. |
|||
func$ task5 . |
|||
for i to 1000 |
|||
if gcd sb[i] sb[i + 1] <> 1 |
|||
return "FAIL" |
|||
. |
|||
. |
|||
return "PASS" |
|||
. |
|||
sternbrocot 10000 |
|||
write "Task 2: " |
|||
for i to 15 |
|||
write sb[i] & " " |
|||
. |
|||
print "\n\nTask 3:" |
|||
for i to 10 |
|||
print "\t" & i & " " & first i |
|||
. |
|||
print "\nTask 4: " & first 100 |
|||
print "\nTask 5: " & task5 |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
Task 2: 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4 |
|||
Task 3: |
|||
1 1 |
|||
2 3 |
|||
3 5 |
|||
4 9 |
|||
5 11 |
|||
6 33 |
|||
7 19 |
|||
8 21 |
|||
9 35 |
|||
10 39 |
|||
Task 4: 1179 |
|||
Task 5: PASS |
|||
</pre> |
|||
=={{header|EchoLisp}}== |
=={{header|EchoLisp}}== |