向数组添加元素 - Pascal

时间:2015-03-02 19:11:59

标签: arrays primes pascal sieve

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.

代码适用于查找素数,我需要的是一个只包含素数的新数组。打印这个时,它有零,因为它的大小相同。任何帮助表示赞赏。感谢。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

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

如果您仍需要帮助,请尝试使用