1
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.

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

4

2 回答 2

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;
于 2015-03-02T19:45:38.790 回答
0
For i:=1 to 999 do
   Begin
     if primes[i] <> 0 then
         begin
           writeln(primes[i]);
         end;
     end;

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

于 2015-11-05T17:32:31.940 回答