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またはランタイムエラーが発生しますが、何が問題なのか判断できません。b配列の因子数の長さとしてkを使用しました。インデックスkの問題は何だと思いますか?

4

1 に答える 1

0

D:=2; を定義する必要があります。デフォルト値が 0 であるため、Begin :D の直後。

于 2013-03-11T10:13:57.697 に答える