70 lines
2.0 KiB
Plaintext
70 lines
2.0 KiB
Plaintext
' Combinations and permutations - 10/04/2017
|
|
Imports System.Numerics 'BigInteger
|
|
Module CombPermRc
|
|
|
|
Sub Main()
|
|
Dim i, j As Long
|
|
For i = 1 To 12
|
|
For j = 1 To i
|
|
Console.Write("P(" & i & "," & j & ")=" & PermBig(i, j).ToString & " ")
|
|
Next j
|
|
Console.WriteLine("")
|
|
Next i
|
|
Console.WriteLine("--")
|
|
For i = 10 To 60 Step 10
|
|
For j = 1 To i Step i \ 5
|
|
Console.Write("C(" & i & "," & j & ")=" & CombBig(i, j).ToString & " ")
|
|
Next j
|
|
Console.WriteLine("")
|
|
Next i
|
|
Console.WriteLine("--")
|
|
For i = 5000 To 15000 Step 5000
|
|
For j = 4000 To 5000 Step 1000
|
|
Console.Write("P(" & i & "," & j & ")=" & PermBig(i, j).ToString("E") & " ")
|
|
Next j
|
|
Console.WriteLine("")
|
|
Next i
|
|
Console.WriteLine("--")
|
|
For i = 5000 To 15000 Step 5000
|
|
For j = 4000 To 5000 Step 1000
|
|
Console.Write("C(" & i & "," & j & ")=" & CombBig(i, j).ToString("E") & " ")
|
|
|
|
Next j
|
|
Console.WriteLine("")
|
|
Next i
|
|
Console.WriteLine("--")
|
|
i = 5000 : j = 4000
|
|
Console.WriteLine("C(" & i & "," & j & ")=" & CombBig(i, j).ToString)
|
|
End Sub 'Main
|
|
|
|
Function PermBig(x As Long, y As Long) As BigInteger
|
|
Dim i As Long, z As BigInteger
|
|
z = 1
|
|
For i = x - y + 1 To x
|
|
z = z * i
|
|
Next i
|
|
Return (z)
|
|
End Function 'PermBig
|
|
|
|
Function FactBig(x As Long) As BigInteger
|
|
Dim i As Long, z As BigInteger
|
|
z = 1
|
|
For i = 2 To x
|
|
z = z * i
|
|
Next i
|
|
Return (z)
|
|
End Function 'FactBig
|
|
|
|
Function CombBig(ByVal x As Long, ByVal y As Long) As BigInteger
|
|
If y > x Then
|
|
Return (0)
|
|
ElseIf x = y Then
|
|
Return (1)
|
|
Else
|
|
If x - y < y Then y = x - y
|
|
Return (PermBig(x, y) / FactBig(y))
|
|
End If
|
|
End Function 'CombBig
|
|
|
|
End Module
|