【问题标题】:Adding elements to an array - Pascal将元素添加到数组 - 帕斯卡
【发布时间】:2015-03-02 19:11:58
【问题描述】:
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.

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

【问题讨论】:

    标签: arrays primes pascal sieve


    【解决方案1】:

    仅在实际需要时更新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;
    

    【讨论】:

      【解决方案2】:
      For i:=1 to 999 do
         Begin
           if primes[i] <> 0 then
               begin
                 writeln(primes[i]);
               end;
           end;
      

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

      【讨论】:

        猜你喜欢
        • 2014-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-21
        • 1970-01-01
        • 1970-01-01
        • 2021-12-28
        • 1970-01-01
        相关资源
        最近更新 更多