Задача на Pascal Free

Задача на Pascal Free
Он брал какой-то промежуток и подсчитывал на нем количество таких чисел. Но так как промежутки были достаточно большими, то он тратил на это много времени. Напишите программу, которая поможет Незнайке справиться с поставленной задачей.
Входные данные:
Данные вводятся с клавиатуры. В строке записаны два натуральных числа a и b, разделенные пробелом (1< =a<=100000 и 1<=b<=100000), задающие промежуток.
Выходные данные:
Программа должна вывести на экран количество чисел, которые имеют нечетное количество делителей.

  • function count_del(n: integer):integer;
    var i,c:integer;
    begin
    c:=0;
    for i:=1 to (n div 2)+1 do
    if n mod i = 0 then
    inc(c);
    count_del:=c;
    end;

    ...

    for i:=a to b do
    if odd(count_del(i))
    inc(count);

    Jurijus Zaksas, спасибо, учел)

  • function DivCount(a:integer):integer;
    var j:integer;
    begin
    Result:=0;
    for j:=1 to a do
    if a mod j = 0 then inc(Result);
    end;

    function Solve(a,b:integer):integer;
    var j:integer;
    begin
    Result:=0;
    for j:=a to b do if odd(DivCount(j)) then Inc(Result);
    end;

    Собссно, осталось написать основную программу в 3 строчки и все. Дерзай.

    Функция Страйкера имеет некоторую существенную оптимизацию по сравнению с моей, но при этом говорит, что у числа 1 ровно 0 делителей, а это как-то не совсем верно.