Stern-Brocot sequence: Difference between revisions

Content added Content deleted
(Add Cowgol)
No edit summary
Line 3,700: Line 3,700:
GCD = 1 for first 1000 members: True
GCD = 1 for first 1000 members: True
</pre>
</pre>

=={{header|PureBasic}}==
<lang PureBasic>EnableExplicit
Define.i i

If OpenConsole("")
PrintN("Stern-Brocot_sequence")
Else
End 1
EndIf

Procedure.i f(n.i)
If n<2
ProcedureReturn n
ElseIf n&1
ProcedureReturn f(n/2)+f(n/2+1)
Else
ProcedureReturn f(n/2)
EndIf
EndProcedure

Procedure.i gcd(a.i,b.i)
If b : ProcedureReturn gcd(b,a%b) : EndIf
ProcedureReturn a
EndProcedure

Procedure.i ind(m.i)
Define.i i=1
While f(i)<>m : i+1 : Wend
ProcedureReturn i
EndProcedure

Print("First 15 elements: ")
For i=1 To 15
Print(Str(f(i))+Space(3))
Next
PrintN(~"\n")

For i=1 To 10
PrintN(RSet(Str(i),3)+" is at pos. #"+Str(ind(i)))
Next
PrintN("100 is at pos. #"+Str(ind(100)))
PrintN("")

i=1
While i<1000 And gcd(f(i),f(i+1))=1 : i+1 : Wend
If i=1000
PrintN("All GCDs are 1.")
Else
PrintN("GCD of "+Str(i)+" and "+Str(i+1)+" is not 1")
EndIf

Input()</lang>
{{out}}
<pre>Stern-Brocot_sequence
First 15 elements: 1 1 2 1 3 2 3 1 4 3 5 2 5 3 4

1 is at pos. #1
2 is at pos. #3
3 is at pos. #5
4 is at pos. #9
5 is at pos. #11
6 is at pos. #33
7 is at pos. #19
8 is at pos. #21
9 is at pos. #35
10 is at pos. #39
100 is at pos. #1179

All GCDs are 1.</pre>


=={{header|Python}}==
=={{header|Python}}==