Stern-Brocot sequence: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (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}}== |