MPRIME1 - Sum of Primes
Tác giả: khuc_tuan
Ngôn ngữ: Pascal
// {$APPTYPE CONSOLE}
{$mode delphi}
const
maxn = 11000;
var
isPrime : array[0..maxn] of boolean;
x, cur, nd, i, j : integer;
ds : array[0..maxn] of integer;
sum : array[0..maxn] of integer;
begin
fillchar(isprime, sizeof(isprime), true);
isprime[0] := false;
isprime[1] := false;
for i:=2 to maxn do if isprime[i] then
begin
inc(nd);
ds[nd] := i;
j := i + i;
while j <= maxn do
begin
isprime[j] := false;
j := j + i;
end;
end;
sum[0] := 0;
for i:=1 to nd do sum[i] := ds[i] + sum[i-1];
while true do
begin
read(x);
if x=0 then break;
j := 0;
cur := 0;
for i:=1 to nd do
begin
if ds[i] > x then break;
while sum[i] - sum[j] > x do inc(j);
if (sum[i] - sum[j]) = x then inc(cur);
end;
writeln(cur);
end;
end.