MPRIME1 - Sum of Primes
Tác giả: flashmt
Ngôn ngữ: Pascal
const max=11000;
var a:array[2..max] of byte;
b:array[0..2000] of integer;
d:array[1..max] of byte;
n:integer;
procedure init;
var i,j,k:integer;
begin
fillchar(a,sizeof(a),0);
k:=trunc(sqrt(max));
for i:=2 to k do
if a[i]=0 then
begin
j:=i*i;
while j<=max do
begin
a[j]:=1;
j:=j+i;
end;
end;
fillchar(b,sizeof(b),0);
for i:=2 to max do
if a[i]=0 then
begin
inc(b[0]);
b[b[0]]:=i;
end;
fillchar(d,sizeof(d),0);
for i:=1 to b[0] do
begin
k:=b[i];
inc(d[k]);
for j:=i+1 to b[0] do
begin
k:=k+b[j];
if k<=max then inc(d[k])
else break;
end;
end;
end;
begin
init;
readln(n);
while n<>0 do
begin
writeln(d[n]);
readln(n);
end;
end.