Tema: Help!
Ver Mensaje Individual
  #19  
Antiguo 03-06-2003
pplu pplu is offline
Miembro
 
Registrado: jun 2003
Posts: 17
Reputación: 0
pplu Va por buen camino
Y como ultima optimizacion que se me ocurre de momento es sacar una operacion que se mantiene invariante dentro del bucle

Código:
function EsPrimo(Num: Integer): Boolean;
var
               temp, i, hasta, integer;
               enc: boolean;
begin
Enc := (N and 1) = 0; //Aqui se dice si es divisible entre 2 y de paso se inicializa Enc
i := 3; // ya hemos comprobado los pares
hasta := N shr 1; // sacamos la condicion invariante
while (i < hasta) and not Enc do begin //Aqui vamos hasta n/2
	temp := N;
	while Temp >= i do Temp := Temp - i; //Aqui "dividimos"
	enc := (Temp = i); //Es divisible por i
	i := i + 2;
end;
return Enc;
end;
Sacando el (N shr 1) de la condicion del while, no se evaluará en cada vuelta del bucle, ahorrando asi, un poquito de tiempo (aunque los procesadores de hoy en dia ejecutan un shr en un ciclo...)
Algo es algo...
__________________
PPlu
Responder Con Cita