## J, <strike>50</strike> <strike>40</strike> 38 characters ##

 f=:3 :'+/-.y<}.~.,(~:/**/)~p:i._1&p:y'

Usage:

 f 1
 0
 f 62
 18
 f 420
 124
 f 10000
 2600

With thanks to [FUZxxl](http://codegolf.stackexchange.com/users/134/fuzxxl).

**Performance test**


 showtotal_jpm_ ''[f 1[start_jpm_ ''
 Time (seconds)
 ┌───────┬──────┬────────┬────────┬─────┬────┬───┐
 │name │locale│all │here │here%│cum%│rep│
 ├───────┼──────┼────────┼────────┼─────┼────┼───┤
 │f │base │0.000046│0.000046│100.0│100 │1 │
 │[total]│ │ │0.000046│100.0│100 │ │
 └───────┴──────┴────────┴────────┴─────┴────┴───┘
 showtotal_jpm_ ''[f 1[f 62[start_jpm_ ''
 Time (seconds)
 ┌───────┬──────┬────────┬────────┬─────┬────┬───┐
 │name │locale│all │here │here%│cum%│rep│
 ├───────┼──────┼────────┼────────┼─────┼────┼───┤
 │f │base │0.000095│0.000095│100.0│100 │2 │
 │[total]│ │ │0.000095│100.0│100 │ │
 └───────┴──────┴────────┴────────┴─────┴────┴───┘
 showtotal_jpm_ ''[f 1[f 62[f 420[start_jpm_ ''
 Time (seconds)
 ┌───────┬──────┬────────┬────────┬─────┬────┬───┐
 │name │locale│all │here │here%│cum%│rep│
 ├───────┼──────┼────────┼────────┼─────┼────┼───┤
 │f │base │0.000383│0.000383│100.0│100 │3 │
 │[total]│ │ │0.000383│100.0│100 │ │
 └───────┴──────┴────────┴────────┴─────┴────┴───┘
 showtotal_jpm_ ''[f 1[f 62[f 420[f 10000[start_jpm_ ''
 Time (seconds)
 ┌───────┬──────┬────────┬────────┬─────┬────┬───┐
 │name │locale│all │here │here%│cum%│rep│
 ├───────┼──────┼────────┼────────┼─────┼────┼───┤
 │f │base │0.084847│0.084847│100.0│100 │4 │
 │[total]│ │ │0.084847│100.0│100 │ │
 └───────┴──────┴────────┴────────┴─────┴────┴───┘
 showtotal_jpm_ ''[f 1[f 62[f 420[f 10000[f 50000[start_jpm_ ''
 Time (seconds)
 ┌───────┬──────┬────────┬────────┬─────┬────┬───┐
 │name │locale│all │here │here%│cum%│rep│
 ├───────┼──────┼────────┼────────┼─────┼────┼───┤
 │f │base │5.014691│5.014691│100.0│100 │5 │
 │[total]│ │ │5.014691│100.0│100 │ │
 └───────┴──────┴────────┴────────┴─────┴────┴───┘