Ver Mensaje Individual
  #5  
Antiguo 07-04-2015
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Reputación: 13
engranaje Va por buen camino
Si entendí bien tu problema, te sucede que en algunos caso vas a obtener un
monton de mensajes 'no es primo', 'es primo'. Quedando en el edit 2 al final solo
el resultado obtenido al dividir un número justo por su anterior. O sea que nunca sera primo,
fijate lo que pasa si introduces un 2 o el 1 en el edit1 en tu algoritmo.
Lo normal en estos casos sería tener una variable booleana que comenzara a true y se
pusiera a false en el momento de encontrar un caso que elimine la posibilidad de
que sea primo, rompiendo el bucle en ese momento.

Un sencillo ejemplo modificando tu código sería asi
Código Delphi [-]
var   a,i:integer;
  bEsPrimo: boolean;
begin
  bEsPrimo := True; 
  a:=strtoint(edit1.Text);
 
  for i:=2 to a-1 do    
    if a mod i =0  then 
    begin
      bEsPrimo := False;
      break;
    end;
  
  if bEsPrimo    
    edit2.text:='es primo'  
  else  
    edit2.text:='no es primo';  
end;

Otra posiblidad podría ser esta:
Código Delphi [-]
var   a,i:integer;
  resultado: string;
begin
  resultado := 'no es primo'; 
 
  a:=strtoint(edit1.Text);
 
  for i:=2 to a-1 do     if a mod i =0  then 
    begin
      resultado := 'es primo';       
      break;
    end;

  edit2.text:= resultado;  
end;

Última edición por engranaje fecha: 07-04-2015 a las 10:35:32.
Responder Con Cita