ManHack
01-09-2009, 19:56
Имеется задача:
http://imageban.ru/show/2009/09/01/2ac095cf74ec49d840f3f1a22e13c429/jpg
Код написан:
{$N+,E-}
program book1;
var
m, n: 2..300000;
input, output: text;
absent: boolean;
i, j, root, divisor: longint;
prim: boolean;
begin
assign (input, 'primes.in');
reset (input);
assign (output, 'primes.out');
rewrite (output);
absent := true;
while not eof(input) do
readln (input, m, n);
i := m;
{ while i < n do begin
prim := true;
for j:= 2 to root do
if (i mod j = 0) and (i <> j) then
prim := false;
if prim then begin
writeln (output, i);
absent := false;
end;
i := i + 1;
end; }
while i < n do begin
root := trunc(sqrt(i));
divisor := 2;
prim := true;
while (divisor <= root) and prim do begin
if i mod divisor <> 0 then
prim := false;
divisor := divisor + 1;
end;
if prim then
write (output, i, ' ');
end;
if absent then
writeln (output, 'Absent');
writeln ('All done.');
end.
(вроде это та версия... ^^)
А теперь главное: ограничения программы указываются для компьютера Intel Celeron 400.
Программа при M и N близких к граничным значениям работает куда больше 6 секунд!
Как с этим бороться?
http://imageban.ru/show/2009/09/01/2ac095cf74ec49d840f3f1a22e13c429/jpg
Код написан:
{$N+,E-}
program book1;
var
m, n: 2..300000;
input, output: text;
absent: boolean;
i, j, root, divisor: longint;
prim: boolean;
begin
assign (input, 'primes.in');
reset (input);
assign (output, 'primes.out');
rewrite (output);
absent := true;
while not eof(input) do
readln (input, m, n);
i := m;
{ while i < n do begin
prim := true;
for j:= 2 to root do
if (i mod j = 0) and (i <> j) then
prim := false;
if prim then begin
writeln (output, i);
absent := false;
end;
i := i + 1;
end; }
while i < n do begin
root := trunc(sqrt(i));
divisor := 2;
prim := true;
while (divisor <= root) and prim do begin
if i mod divisor <> 0 then
prim := false;
divisor := divisor + 1;
end;
if prim then
write (output, i, ' ');
end;
if absent then
writeln (output, 'Absent');
writeln ('All done.');
end.
(вроде это та версия... ^^)
А теперь главное: ограничения программы указываются для компьютера Intel Celeron 400.
Программа при M и N близких к граничным значениям работает куда больше 6 секунд!
Как с этим бороться?