Maybe something like this:
data = Flatten[Table[{n, b, f[n, b]}, {n, 1, 100}, {b, 2, 100}], 1];
Then to group values on different layers:
data1 = GatherBy[data, Last];
and
ListPointPlot3D[data1, AxesLabel -> {"n", "b", "f[n,b]"} ]

which displays a few lower layers, ot
ListPointPlot3D[data1, AxesLabel -> {"n", "b", "f[n,b]"}, PlotRange -> All]

to show everything.
Or in different ways:
DiscretePlot3D[f[n, b], {n, 1, 10}, {b, 2, 10},
AxesLabel -> {"n", "b", "f[n,b]"}, PlotRange -> All,
ColorFunction -> "BlueGreenYellow", ExtentSize -> Full]

ListPlot3D[data, Mesh -> None, InterpolationOrder -> 3,
ColorFunction -> "SouthwestColors"]
