Помогите разобрать код на JS, итеративный процесс.

Обьясните как эта функция работает, очень надо, не могу понять.
Помогите понять код целиком
const smallestDivisor = (num) => {
const iter = (acc) => {
if (acc > num / 2) { //здесь: если 'acc' больше 'числа(num) деленного на 2'
return num; //возвращает число
}
if (num % acc === 0){ // это не совсем понятно как читается 'число(num) остаток от числа(%) acc === 0'
return acc;
}
return iter (acc + 1);
};
return iter(2); //кроме цифры 2 пробовал ставить 15, код не работает. Обьясните почему
};
export default smallestDivisor;
06 декабря 2018 в 17:52
Ближайшие курсы

Как начать свой путь в разработке?
Онлайн-курс
8
марта
Интенсив «Сегментация клиентов. С чего начать?»
Онлайн-курс
8
марта
Открытое онлайн собеседование со студентом на вакансию junior frontend-разработчика
Онлайн-курс
8
марта
Новые статьи

Что такое MVP и как к нему подступиться
324700

Обновляем программу обучения для менеджеров по продажам
38300

BI-системы: что это и зачем они нужны бизнесу
329800