while (number > 0)
Немедленно закончится (так как число <0 с самого начала) </p>
Вы можете заставить его считать число без знака:
unsigned int new_number = number;
И тогда оно должно работать сnew_number
(это работает из-за того, как реализован знаковый бит)