You could pre-create the sequence manually and subset.
sane_steps <- (function() {
master_seq <- unlist(lapply(seq_len(.Machine$double.digits), function(x) {
by <- 10^x
seq(by, 10*by, by)
}))
master_seq <- c(seq(5, 50, 5), master_seq[-seq_len(5)])
function(y) c(master_seq[master_seq < y], y)
})()
Example
> sane_steps(99)
[1] 5 10 15 20 25 30 35 40 45 50 60 70 80 90 99
> sane_steps(523)
[1] 5 10 15 20 25 30 35 40 45 50 60 70 80 90 100 100 200 300 400 500 523
> sane_steps(4548)
[1] 5 10 15 20 25 30 35 40 45 50 60 70 80 90 100 100 200 300 400 500 600 700 800 900 1000 1000 2000 3000 4000
[30] 4548
> sane_steps(27304)
[1] 5 10 15 20 25 30 35 40 45 50 60 70 80 90 100 100 200 300 400 500 600 700 800 900
[25] 1000 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 10000 20000 27304