Вот алгоритм который позволяет определить количество делимых на

чисел на отрезке
![$[a+1, ... a+l]$ $[a+1, ... a+l]$](https://dxdy-04.korotkov.co.uk/f/b/d/a/bda43221a517b4bfc0146037534d267382.png)
Код:
int divNum(int a, int l, int divisor)
{
int i = 1;
// find first divisor in set
while ((a+i) % divisor)
{
if (++i > l)
return 0;}
return (l-i+1)/divisor + 1;
}
Даже если бы в вашей функции не было ошибки (она есть, см. далее), хочу посоветовать...
Не нужно решать совсем «в лоб» такие чисто алгоритмические задачи. 5 минут посидите в следующий раз с бумагой и карандашом, прежде чем бросаться писать
натуральный брутфорc.И вуаля - время выполнения функции из

становится

Вот мой вариант функции
Код:
int divNum_true(int x, int y, int d)
{
return y/d-x/d + !(x%d);
}
В ваших обозначениях это интервал
![$[(x-1)+1, (x-1)+(y-x+1)]$ $[(x-1)+1, (x-1)+(y-x+1)]$](https://dxdy-04.korotkov.co.uk/f/3/1/e/31ec8841ed2eaf13a87b39392a82076b82.png)
, то бишь

и

Собственно, корректность своей формулы не проверял и не доказывал (на глаз верная, но чёрт его знает), ведь главное - сверить её с вашей.
Уже для
![$[2, 3]$ $[2, 3]$](https://dxdy-02.korotkov.co.uk/f/d/6/e/d6e6d245e643302605d26b1e0ab348fd82.png)
и

моя даёт правильное число делимых

тогда как ваша выводит

.
Если заинтересуетесь моей формулой, то с удовольствием расскажу, как получил. Но там всё очень тривиально.