Нет ничего плохого в вашей логике c, кроме случаев, когда ди git равен 0.
После того, как вы извлечете ди git из своего номера, rem = num % 10;
Вы должны сначала проверьте, равен ли он 0, прежде чем проверять, делится ли число на эту ди git. Потому что деление на ноль не определено и является источником вашей ошибки. Поэтому не увеличивайте count
, если rem == 0
.
Например, рассмотрите n = 30:
В первой итерации: rem = 30% 10 = 0 => n % rem => ОШИБКА (попытка 30/0)
Это может произойти на любой итерации, учитывая, что di git равно 0.
Решение:
Изменить
if (n % rem == 0) {
count++;
}
на:
// making sure that rem is not zero before dividing n by rem
if (rem != 0 && n % rem == 0) {
count++;
}
В сторону: было бы лучше назвать rem
как digit
.