0

我正在尝试分解给定的数字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 有什么问题吗?

4

1 回答 1

0

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

于 2013-03-11T10:13:57.697 回答