NestWhile

NestWhile[fexprtest]
applies a function f repeatedly on an expression expr, until applying test on the result no longer yields True.
NestWhile[fexprtestm]
supplies the last m results to test (default value: 1).
NestWhile[fexprtest, All]
supplies all results gained so far to test.

Divide by 2 until the result is no longer an integer: