There is no "correct" way of doing such a thing. There are different ways of accomplishing this, and you need to choose one that is something you can implement/run and behaves in the way you like. Start with something simple that you understand and go from there.
For example:
Ben Reeves suggested "(Number blog posts with the specific tag / total volume blog posts)" and a pagerank approach. If these select topics in an appropriate manner for you, go with them.
Here are a couple of other suggestions,
You could add weights for posts that are dependent on how popular the hosting web site is. For example, something posted on the New York Times should probably be considered more popular than something on Joe Shmoes blog and should receive more weight. This is similar to a page rank approach, and may in practice have little difference.
You could add a time factor, so how fast posts come for a topic matters. E.g. if topic B has 30 posts from last week, and topic C has 10 posts from today you might want to consider topic C to be more popular. What if topic D has 2 posts a week over the last year? What about topic E that has 5 posts in the last hour?