--- id: 5a23c84252665b21eecc7eca title: Kaprekar numbers challengeType: 5 forumTopicId: 302296 --- ## Description
A positive integer is a Kaprekar number if: Note that a split resulting in a part consisting purely of 0s is not valid, as 0 is not considered positive.Example Kaprekar numbers:
## Instructions
Write a function that takes a number $n$, a base $bs$, and returns true if the number is a Kaprekar number for the given base. Otherwise, the function returns false.
## Tests
``` yml tests: - text: isKaprekar should be a function. testString: assert(typeof isKaprekar == 'function', 'isKaprekar should be a function.'); - text: isKaprekar(1, 10) should return a boolean. testString: assert(typeof isKaprekar(1, 10) == 'boolean', 'isKaprekar(1, 10) should return a boolean.'); - text: isKaprekar(1, 10) should return true. testString: assert.equal(isKaprekar(1, 10), true, 'isKaprekar(1, 10) should return true.'); - text: isKaprekar(9, 10) should return true. testString: assert.equal(isKaprekar(9, 10), true, 'isKaprekar(9, 10) should return true.'); - text: isKaprekar(2223, 10) should return true. testString: assert.equal(isKaprekar(2223, 10), true, 'isKaprekar(2223, 10) should return true.'); - text: isKaprekar(22823, 10) should return false. testString: assert.equal(isKaprekar(22823, 10), false, 'isKaprekar(22823, 10) should return false.'); - text: isKaprekar(9, 17) should return false. testString: assert.equal(isKaprekar(9, 17), false, 'isKaprekar(9, 17) should return false.'); - text: isKaprekar(225, 17) should return true. testString: assert.equal(isKaprekar(225, 17), true, 'isKaprekar(225, 17) should return true.'); - text: isKaprekar(999, 17) should return false. testString: assert.equal(isKaprekar(999, 17), false, 'isKaprekar(999, 17) should return false.'); ```
## Challenge Seed
```js function isKaprekar(n, bs) { // Good luck! } ```
## Solution
```js function isKaprekar(n, bs) { if (n < 1) return false; if (n == 1) return true; for (var a = n * n, b = 0, s = 1; a; s *= bs) { b += a % bs * s; a = Math.floor(a / bs); if (b && a + b == n) return true; } return false; } ```