Java inverte um valor int sem usar array

Alguém pode me explicar como reverter um número inteiro sem usar array ou String. Eu recebi esse código on-line, mas não entendo realmente por que + insira% 10 e divido novamente.

while (input != 0) {
    reversedNum = reversedNum * 10 + input % 10;
    input = input / 10;   
}

E como usar esse código de exemplo para reverter apenas o número ímpar. Exemplo: eu recebi essa entrada 12345, então ela reverterá o número ímpar para a saída 531.

questionAnswers(29)

yourAnswerToTheQuestion