Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

dicas3d

compilar mais rápido

Mensagens Recomendadas

dicas3d

Já não está a dar isso. Agora dá "time limite execeed" e não sei que fazer para o pôr a executar mais rápido.

program primos;
uses crt;
var x,qnt, numero, ct, maior, contador :integer;
i : longint;
num:packed array[2..999999999] of boolean;
maximo, limite : byte;
linha, cadeia, parte : string;
begin
clrscr;
qnt:=0;
read(limite);
for i:=2 to 9999999 do
begin
num[i]:= true;
end;
for i:=2 to 9999999 do
begin
  x:=2;
  while i*x <=limite do begin
  num[i*x]:= false;
  x:=x+1
  end;
  end;
  cadeia := '';
  linha := '1';
    while (not eof) or (linha <> ' ') or (length(cadeia) < 10000000) or (length(linha) < 100) or (linha <> 'scanf') do begin
  readln(linha);
  cadeia := cadeia + linha;
  end;
   ct := length(cadeia) - limite;
  for i:=2 to limite do begin
  contador := 0;
   repeat
   parte := copy(cadeia, contador, limite);
   if length(parte) = limite then begin
   val(parte, numero);
   if num[numero] = true then qnt := qnt + 1;
   end;
   until contador = ct;
   end;
   writeln(qnt);
end.

preciso de uma maneira de fazer isto executar mais rápido.


Abraços

dicas3d

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vasco16

Para correr um programa mais rápido, ou tentas simplificar o algoritmo ou tentas dividir o programa em sub-programas (rotinas/procedimentos/funções).

Este numero enorme é mesmo necessário:

num:packed array[2..999999999] of boolean;

Quem diz este diz outros que o teu programa tem.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.