NumberQ returns True means the argument is a number. I suspect NumberQ is not the function you wanted to use.
It might also be simpler to use the While function rather than Throw and Catch. Also note that cm is a new variable.
If you want c*m you need to put a space between them or a multiplication symbol.