在閱讀「代碼:計算機隱藏的語言」時,我遇到了ALGOL程序,作者將其用於查找使用Sieve算法的10,000個素數。以下是代碼。這個程序是否找到素數錯誤?
begin
Boolean array a[2:10000];
integer i, j;
for i :=2 step 1 until 10000 do
a[i] :=true;
for i :=2 step 1 until 100 do
if a[i] then
for j := 2 step 1 until 10000/i do
a[i*j] :=false;
for i :=2 step 1 until 10000 do
if a[i] then
print(i);
end
當我通常看到一個程序時,我會用真實值來測試它,看它的有效性。在這種情況下,我所關心的是線路For j:=....
。如果我們將i
作爲3和3作爲步驟j
中的特定點。那麼j
將是1.因此,a[i*j]
,即a[3]
,如果它是素數,它應該是真的。 j
或i
是否等於1?
我在這裏錯過了什麼嗎?我將不勝感激任何幫助。
運行它時發生了什麼? –
@OliCharlesworth我沒有真正運行它。我現在會這樣做。 – user29568
'對於j:= 2' - 你認爲2是什麼意思? – Mat