Ошибка времени выполнения: Индекс находился вне границ массива. PascalABC

Задание:

Рассмотрим произвольное натуральное число, представим его всеми возможными способами в виде произведения двух натуральных чисел и найдём для каждого такого произведения разность сомножителей. Например, для числа 16 получим: 16 = 16*1 = 8*2 = 4*4, множество разностей содержит числа 15, 6 и 0. Найдите все натуральные числа, принадлежащие отрезку [1 000 000; 2 000 000], у которых составленное описанным способом множество разностей будет содержать не меньше трёх элементов, не превышающих 100. В ответе перечислите найденные числа в порядке возрастания.

Выдаёт ошибку из заголовка на выделенной строке.

Код (знаю, что очень кривой :) ):

var i,k,z:int64;
    A,B:array[1..1000000] of int64;
begin
   k:=0;
   for i:=1000000 to 2000000 do begin
      for z:=1 to (i div 10-1) do
      begin
         if (i mod z = 0) then 
         begin
           if ((i/z)-z<100) and ((i/z)-z>0) then
           begin  
             k:=k+1;
             

A[i]:=(i div z)-z;

             B[i]:=k;
           end
           else if ((z-(i/z))<100) and (z-(i/z)>0) then 
           begin  
             k:=k+1;
             A[i]:=z-(i div z);
             B[i]:=k;
           end;
         end;
      end;
   end;
   for i:=1000000 to 2000000 do if B[i]>3 then writeln (A[i])
end.

Ответы (0 шт):