Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
54
Task/Farey-sequence/FreeBASIC/farey-sequence.basic
Normal file
54
Task/Farey-sequence/FreeBASIC/farey-sequence.basic
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
' version 05-04-2017
|
||||
' compile with: fbc -s console
|
||||
|
||||
' TRUE/FALSE are built-in constants since FreeBASIC 1.04
|
||||
' But we have to define them for older versions.
|
||||
#Ifndef TRUE
|
||||
#Define FALSE 0
|
||||
#Define TRUE Not FALSE
|
||||
#EndIf
|
||||
|
||||
Function farey(n As ULong, descending As Long) As ULong
|
||||
|
||||
Dim As Long a, b = 1, c = 1, d = n, k
|
||||
Dim As Long aa, bb, cc, dd, count
|
||||
|
||||
If descending = TRUE Then
|
||||
a = 1 : c = n -1
|
||||
End If
|
||||
|
||||
count += 1
|
||||
If n < 12 Then Print Str(a); "/"; Str(b); " ";
|
||||
|
||||
While ((c <= n) And Not descending) Or ((a > 0) And descending)
|
||||
aa = a : bb = b : cc = c : dd = d
|
||||
k = (n + b) \ d
|
||||
a = cc : b = dd : c = k * cc - aa : d = k * dd - bb
|
||||
count += 1
|
||||
If n < 12 Then Print Str(a); "/"; Str(b); " ";
|
||||
Wend
|
||||
|
||||
If n < 12 Then Print
|
||||
|
||||
Return count
|
||||
|
||||
End Function
|
||||
|
||||
' ------=< MAIN >=------
|
||||
|
||||
For i As Long = 1 To 11
|
||||
Print "F"; Str(i); " = ";
|
||||
farey(i, FALSE)
|
||||
Next
|
||||
Print
|
||||
For i As Long= 100 To 1000 Step 100
|
||||
Print "F";Str(i);
|
||||
Print iif(i <> 1000, " ", ""); " = ";
|
||||
Print Using "######"; farey(i, FALSE)
|
||||
Next
|
||||
|
||||
' empty keyboard buffer
|
||||
While Inkey <> "" : Wend
|
||||
Print : Print "hit any key to end program"
|
||||
Sleep
|
||||
End
|
||||
Loading…
Add table
Add a link
Reference in a new issue