Neighbor discovery is a primary enabling ability for many emerging mobile applications. Due to its significant impact on the energy budget of battery equipped devices, energy preserving solutions have been investigated for a long time, often introducing duty cycling. Ultimately, these solutions settle for trade-offs between energy and performance, leaving the final decision on how much energy to allocate to neighbor discovery in the hands of application developers or system engineers. In other words, someone must decide if an improvement in the quality of the discovery (e.g. better discovery latency) is worth an increase in energy consumption. In this paper, we devise a different approach in order to answer the following basic question: how many contacts can a smartphone discover using its battery energy budget? The answer clearly depends on the adopted discovery algorithm, on the mobility conditions, and on the stochastic characteristics of the encounters. However, we demonstrate that there is a natural optimum duty cycle that maximizes the number of discovered contacts in almost every real application scenario. This optimum is natural in the sense that it does not depend on any system level parameter or performance requirements. It depends uniquely on the stochastic characteristics of the meeting process between the nodes. We present an analytic analysis and devise a practical algorithm that dynamically adapts the duty cycle length to the time-varying context, without the need to make assumptions on (or predict) the distribution of the contact duration. The findings presented in the paper are validated against data coming from real human mobility traces and implemented on a mobile application. © 2002-2012 IEEE.