Coverage is a primary metric for ensuring the quality of services provided by a wireless sensor network (WSN). In this paper, we focus on the $k$-coverage problem, which requires a selection of a minimum subset of nodes among the deployed ones such that each point in the target region is covered by at least $k$ nodes. We present both centralized and distributed protocols to tackle this fundamental problem. Our protocols are based on a novel concept of Coverage Contribution Area, which helps to get a lower sensor spatial density. Furthermore, our protocols take the residual energies of the sensors into consideration. This consideration combined with the low sensor spatial density ensures that our protocols can prolong the network lifetime to a greater extent, which is crucial to WSNs due to the limited energy supply and the difficulties of energy recharging. We also conduct extensive simulations to verify our proposed algorithms, and the results show that they are superior over existing ones.