Refactor: add a 'divisible-by' method for readability
Use tail recursion so we don't blow the stack with large numbers