Ошибка времени выполнения: Индекс находился вне границ массива. 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.