##x86-64 Assembly ([Windows x64 Calling Convention](https://msdn.microsoft.com/en-us/library/ms235286.aspx)), <strike>14</strike> 13 bytes An inefficient (but svelte!) iterative approach (with credit to @Neil for inspiration): HowFarAway PROC 6A 01 push 1 58 pop rax ; temp = 1 Loop: 0F AF C2 imul eax, edx ; temp *= b 39 C8 cmp eax, ecx 72 F9 jb Loop ; keep looping (jump) if temp < n 29 C8 sub eax, ecx ; temp -= n C3 ret ; return temp HowFarAway ENDP The above function takes two integer parameters, `n` (passed in the `ECX` register) and `b` (passed in the `EDX` register), and returns a single integer result (in the `EAX` register). To call it from C, you would use the following prototype: unsigned HowFarAway(unsigned n, unsigned b); This is limited to the range of a 32-bit integer. It can be easily modified to support 64-bit integers by using the full long registers, but it would cost more bytes to encode those instructions. :-)