const smallestDivisor = (num) => {
// BEGIN
const iter = (acc) => {
// We use 'num / 2' in the condition below, and not 'num'.
// This is a simple optimization: a number cannot be divided
// by a number larger than its half.
if (acc > num / 2) {
return num;
}
if (num % acc === 0) {
return acc;
}
return iter(acc + 1);
};
return iter(2);
// END
};
Y29uc3Qgc21hbGxlc3REaXZpc29yID0gKG51bSkgPT4gewogICAgLy8gQkVHSU4KICBjb25zdCBpdGVyID0gKGFjYykgPT4gewogICAgLy8gV2UgdXNlICdudW0gLyAyJyBpbiB0aGUgY29uZGl0aW9uIGJlbG93LCBhbmQgbm90ICdudW0nLgogICAgLy8gVGhpcyBpcyBhIHNpbXBsZSBvcHRpbWl6YXRpb246IGEgbnVtYmVyIGNhbm5vdCBiZSBkaXZpZGVkCiAgICAvLyBieSBhIG51bWJlciBsYXJnZXIgdGhhbiBpdHMgaGFsZi4KICAgIGlmIChhY2MgPiBudW0gLyAyKSB7CiAgICAgIHJldHVybiBudW07CiAgICB9CiAgICBpZiAobnVtICUgYWNjID09PSAwKSB7CiAgICAgIHJldHVybiBhY2M7CiAgICB9CiAgICByZXR1cm4gaXRlcihhY2MgKyAxKTsKICB9OwoKICByZXR1cm4gaXRlcigyKTsKICAvLyBFTkQKfTs=