2015-03-02 182 views
0
program Primes(input,output); 
var 
    candidates, primes : Array[0..999] of Integer; 
    n, i, j : Integer; 
begin 
    for i := 0 to 999 do 
    begin 
    candidates[i] := 1; 
    end; 
    candidates[0] := 0; 
    candidates[1] := 0; 
    i := 0; 
    while i < 1000 do 
    begin 
    while (i < 1000) and (candidates[i] = 0) do 
    begin 
     i := i + 1; 
    end; 
    if i < 1000 then 
    begin 
     j := 2; 
     while i*j < 1000 do 
     begin 
     candidates[i*j] := 0; 
     j := j + 1; 
     end; 
     i := i + 1; 
    end; 
    end; 
    for i := 0 to 999 do 
    begin 
    if candidates[i] <> 0 then 
    begin 
     primes[i] := i; 
    end; 
    end; 
    for i := 0 to 999 do 
    begin 
    writeln(primes[i]); 
    end; 
    readln(); 
end. 

该代码适用于查找素数,我需要的是只包含素数的新数组。当打印这个时,它有零,因为它的大小相同。任何帮助表示赞赏。谢谢。将元素添加到数组中 - Pascal

回答

0

只有在实际需要时更新primes。请您更新条目数,只有输出的轨道,参赛人数结尾:

j := 0; 
for i := 0 to 999 do 
begin 
    if candidates[i] <> 0 then 
    begin 
    primes[j] := i; 
    Inc(j); 
    end; 
end; 

for i := 0 to j - 1 do 
    WriteLn(primes[i]); 

readln; 
0
For i:=1 to 999 do 
    Begin 
    if primes[i] <> 0 then 
     begin 
      writeln(primes[i]); 
     end; 
    end; 

如果您仍然需要帮助试试这个