28 lines
1.1 KiB
VB.net
28 lines
1.1 KiB
VB.net
Module Module1
|
|
Function MianChowla(ByVal n As Integer) As Integer()
|
|
Dim mc(n - 1) As Integer, sums, ts As New HashSet(Of Integer),
|
|
sum As Integer : mc(0) = 1 : sums.Add(2)
|
|
For i As Integer = 1 To n - 1
|
|
For j As Integer = mc(i - 1) + 1 To Integer.MaxValue
|
|
mc(i) = j
|
|
For k As Integer = 0 To i
|
|
sum = mc(k) + j
|
|
If sums.Contains(sum) Then ts.Clear() : Exit For
|
|
ts.Add(sum)
|
|
Next
|
|
If ts.Count > 0 Then sums.UnionWith(ts) : Exit For
|
|
Next
|
|
Next
|
|
Return mc
|
|
End Function
|
|
|
|
Sub Main(ByVal args As String())
|
|
Const n As Integer = 100
|
|
Dim sw As New Stopwatch(), str As String = " of the Mian-Chowla sequence are:" & vbLf
|
|
sw.Start() : Dim mc As Integer() = MianChowla(n) : sw.Stop()
|
|
Console.Write("The first 30 terms{1}{2}{0}{0}Terms 91 to 100{1}{3}{0}{0}" &
|
|
"Computation time was {4}ms.{0}", vbLf, str,
|
|
String.Join(" ", mc.Take(30)), String.Join(" ", mc.Skip(n - 10)), sw.ElapsedMilliseconds)
|
|
End Sub
|
|
End Module
|