已知一个整型数组(data:array[0..6] of integer; )中存有7个1-30以内的整型数据,求出数组中(7个数字中)所有素数的和?
(要求除数学定义的素数(如:2、3、5等)外,如数组中含数字1,还要把1也列入素数范围参与求和)

解决方案 »

  1.   

    function IsPrime(AInt: integer): boolean;
    var
    I : integer;
    begin
    Result := True;
    for I := 2 to Trunc(Sqrt(Abs(AInt))) do
        if AInt mod I = 0 then begin
          Result := False;
          Break;
        end;
    end;function GetPrimeSum: integer;
    var
      i: integer;
    begin
      Result := 0;
      for i := 0 to Length(data) - 1 do
      begin 
        if data[i] = 1 then
        begin
          Result := Result + data[i];
        end
        else
        begin
          if IsPrime(data[i]) then
            Result := Result + data[i];
        end;
      end;
    end;
      

  2.   

    预先定义 Prime : Array[1..30] of boolean;
      

  3.   

    再优化下,
    Prime : Array[1..30] of integer;素数 Prime[x] = x; 
    否则 Prime[x] = 0;