Taxicab numbers: Difference between revisions
Content added Content deleted
m (changed whitespace.) |
|||
Line 3,761: | Line 3,761: | ||
4162 7668767232 = 44^3 +1972^3 = 1384^3 +1712^3 360^3 +1968^3 |
4162 7668767232 = 44^3 +1972^3 = 1384^3 +1712^3 360^3 +1968^3 |
||
4359 8849601000 = 1017^3 +1983^3 = 1530^3 +1740^3 900^3 +2010^3</pre> |
4359 8849601000 = 1017^3 +1983^3 = 1530^3 +1740^3 900^3 +2010^3</pre> |
||
=={{header|Visual Basic .NET}}== |
|||
{{trans|C#}} |
|||
<lang vbnet> |
|||
Imports System.Text |
|||
Module Module1 |
|||
Function GetTaxicabNumbers(length As Integer) As IDictionary(Of Long, IList(Of Tuple(Of Integer, Integer))) |
|||
Dim sumsOfTwoCubes As New SortedList(Of Long, IList(Of Tuple(Of Integer, Integer))) |
|||
For i = 1 To Integer.MaxValue - 1 |
|||
For j = 1 To Integer.MaxValue - 1 |
|||
Dim sum = CLng(Math.Pow(i, 3) + Math.Pow(j, 3)) |
|||
If Not sumsOfTwoCubes.ContainsKey(sum) Then |
|||
sumsOfTwoCubes.Add(sum, New List(Of Tuple(Of Integer, Integer))) |
|||
End If |
|||
sumsOfTwoCubes(sum).Add(Tuple.Create(i, j)) |
|||
If j >= i Then |
|||
Exit For |
|||
End If |
|||
Next |
|||
REM Found that you need to keep going for a while after the length, because higher i values fill in gaps |
|||
If sumsOfTwoCubes.AsEnumerable.Count(Function(t) t.Value.Count >= 2) >= length * 1.1 Then |
|||
Exit For |
|||
End If |
|||
Next |
|||
Dim values = (From t In sumsOfTwoCubes Where t.Value.Count >= 2 Select t) _ |
|||
.Take(2006) _ |
|||
.ToDictionary(Function(u) u.Key, Function(u) u.Value) |
|||
Return values |
|||
End Function |
|||
Sub PrintTaxicabNumbers(values As IDictionary(Of Long, IList(Of Tuple(Of Integer, Integer)))) |
|||
Dim i = 1 |
|||
For Each taxicabNumber In values.Keys |
|||
Dim output As New StringBuilder |
|||
output.AppendFormat("{0,10}" + vbTab + "{1,4}", i, taxicabNumber) |
|||
For Each numbers In values(taxicabNumber) |
|||
output.AppendFormat(vbTab + "= {0}^3 + {1}^3", numbers.Item1, numbers.Item2) |
|||
Next |
|||
If i <= 25 OrElse (i >= 2000 AndAlso i <= 2006) Then |
|||
Console.WriteLine(output.ToString) |
|||
End If |
|||
i += 1 |
|||
Next |
|||
End Sub |
|||
Sub Main() |
|||
Dim taxicabNumbers = GetTaxicabNumbers(2006) |
|||
PrintTaxicabNumbers(taxicabNumbers) |
|||
End Sub |
|||
End Module</lang> |
|||
{{out}} |
|||
<pre> 1 1729 = 10^3 + 9^3 = 12^3 + 1^3 |
|||
2 4104 = 15^3 + 9^3 = 16^3 + 2^3 |
|||
3 13832 = 20^3 + 18^3 = 24^3 + 2^3 |
|||
4 20683 = 24^3 + 19^3 = 27^3 + 10^3 |
|||
5 32832 = 30^3 + 18^3 = 32^3 + 4^3 |
|||
6 39312 = 33^3 + 15^3 = 34^3 + 2^3 |
|||
7 40033 = 33^3 + 16^3 = 34^3 + 9^3 |
|||
8 46683 = 30^3 + 27^3 = 36^3 + 3^3 |
|||
9 64232 = 36^3 + 26^3 = 39^3 + 17^3 |
|||
10 65728 = 33^3 + 31^3 = 40^3 + 12^3 |
|||
11 110656 = 40^3 + 36^3 = 48^3 + 4^3 |
|||
12 110808 = 45^3 + 27^3 = 48^3 + 6^3 |
|||
13 134379 = 43^3 + 38^3 = 51^3 + 12^3 |
|||
14 149389 = 50^3 + 29^3 = 53^3 + 8^3 |
|||
15 165464 = 48^3 + 38^3 = 54^3 + 20^3 |
|||
16 171288 = 54^3 + 24^3 = 55^3 + 17^3 |
|||
17 195841 = 57^3 + 22^3 = 58^3 + 9^3 |
|||
18 216027 = 59^3 + 22^3 = 60^3 + 3^3 |
|||
19 216125 = 50^3 + 45^3 = 60^3 + 5^3 |
|||
20 262656 = 60^3 + 36^3 = 64^3 + 8^3 |
|||
21 314496 = 66^3 + 30^3 = 68^3 + 4^3 |
|||
22 320264 = 66^3 + 32^3 = 68^3 + 18^3 |
|||
23 327763 = 58^3 + 51^3 = 67^3 + 30^3 |
|||
24 373464 = 60^3 + 54^3 = 72^3 + 6^3 |
|||
25 402597 = 61^3 + 56^3 = 69^3 + 42^3 |
|||
2000 1671816384 = 944^3 + 940^3 = 1168^3 + 428^3 |
|||
2001 1672470592 = 1124^3 + 632^3 = 1187^3 + 29^3 |
|||
2002 1673170856 = 1034^3 + 828^3 = 1164^3 + 458^3 |
|||
2003 1675045225 = 1081^3 + 744^3 = 1153^3 + 522^3 |
|||
2004 1675958167 = 1096^3 + 711^3 = 1159^3 + 492^3 |
|||
2005 1676926719 = 1095^3 + 714^3 = 1188^3 + 63^3 |
|||
2006 1677646971 = 990^3 + 891^3 = 1188^3 + 99^3</pre> |
|||
=={{header|Wren}}== |
=={{header|Wren}}== |