以下pascal代码中的运行时错误

以下pascal代码中的运行时错误,pascal,prime-factoring,Pascal,Prime Factoring,我试图将给定的数字a,因此我编写了以下Pascal代码: program prime_factors; var b:array[1..1000] of integer; k,i,d,a:integer; begin k:=0; write(' enter number '); read(a); while a>1 do if a mod d =0 then begin k:=k+1; b[k]:=d;

我试图将给定的数字
a
,因此我编写了以下Pascal代码:

program prime_factors;
  var b:array[1..1000] of integer;
  k,i,d,a:integer;
begin
  k:=0;
  write(' enter number ');
  read(a);
  while a>1 do
    if a mod d =0 then
      begin
        k:=k+1;
        b[k]:=d;
        a:=a div d;
      end
    else
      if d=2 then
        d:=d+1
      else
        d:=d+2;
   for i:=1 to k do
     write(b[i],'  ');
   readln();
   readln();
end.

但当我运行它时,它会给我错误200或运行时错误,但我无法确定是什么问题。我使用k作为b数组中因子数的长度。我应该想想索引k有什么问题吗?

你应该定义D:=2;就在Begin:D之后,因为它的默认值是0。

找到了我的错误,我没有初始化dEach运行时错误代码,因为它有相关的描述。错误200被零除,这应该表明d确实是罪魁祸首,因为代码中的所有除法操作(mod,div)都使用d作为分母。