the loop conditional should be pre-computed, instead of performing same calculation and sprintf on every iteration.
also..wondering why you have the braces around the push, as there's no control statement..those braces do nothing?
the hardest line to type correctly is: stty erase ^H
Comment on Re: how to make perl only print whole numbers
Moreover, if you are iterating until (number/2) in order to find number's *prime* factors, then you're on a wrong way, since the right condition would be to iterate until sqrt(number).