Jump to content

Stern-Brocot sequence: Difference between revisions

no edit summary
(Add Cowgol)
No edit summary
Line 3,700:
GCD = 1 for first 1000 members: True
</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}}==
164

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.