MPRIME1 - Sum of Primes

Tác giả: ll931110

Ngôn ngữ: Pascal

Program MPRIME1;
        Var
                check: array[2..11000] of boolean;
                  a,b: array[1..11000] of integer;
                n,num: integer;

Procedure Eratostene;
          Var
                i,k: integer;
          Begin
                Fillchar(check, sizeof(check), true);

                For i:= 2 to trunc(sqrt(11000)) do
                    Begin
                        k:= 2 * i;
                        While k <= 11000 do
                                Begin
                                        check[k]:= false;
                                        k:= k + i;
                                End;
                    End;
          End;

Procedure primearray;
          Var
                i: integer;
          Begin
                num:= 0;
                For i:= 2 to 11000 do
                   if check[i] then
                        Begin
                                inc(num);
                                a[num]:= i;
                        End;
          End;

Procedure counting;
          Var
                i,k,sum: integer;
          Begin
                Fillchar(b, sizeof(b), 0);

                For i:= 1 to num do
                   Begin
                        sum:= a[i];
                        k:= i;

                        While (sum <= 11000) and (k <= num) do
                              Begin
                                        inc(b[sum]);
                                        inc(k);
                                        sum:= sum + a[k];
                              End;
                   End;
          End;

Procedure printresult;
          Begin
                Repeat
                        Readln(n);
                        If n <> 0 then writeln(b[n]);
                Until n = 0;
          End;

Begin
        Eratostene;
        primearray;
        counting;
        printresult;
End.

Download