2012-10-27 209 views
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有什麼問題嗎?

+0

找到我的錯誤,我還沒有初始化d –

+0

每個運行時錯誤代碼都有一個關聯的描述。錯誤200被零除,這應該表明d確實是罪魁禍首,因爲代碼中的所有除法運算(mod,div)都使用d作爲分母。 – Thomas

回答

0

你應該定義D:= 2;在開始:D之後,因爲它的默認值是0.