Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con numeros primos (https://www.clubdelphi.com/foros/showthread.php?t=83261)

Jcn 27-05-2013 21:17:35

Ayuda con numeros primos
 
Hola, necesito ayuda con este programa para que sume numeros primos entre dos limites pedidos, la cual tiene un error.

Código Delphi [-]
type
  positivo=0..MaxInt;

var
  suma,factor,numero,min,max: positivo;
  primo:Boolean;
begin
  readln(min,max);
  suma:=0;
  for numero:= min to max do
  begin
    {aqui esta el error}
    IF (numero) mod 2= 0 and (numero<>2 then
       primo:=False
    else
    begin
      factor:=3;
      primo:=True;
      repeat
        if (numero mod factor)=0 then
          primo:=False
        else
          factor:=factor+2
      until factor>Sqrt(numero) or primo = False;
    end;
    if primo then
      suma:=suma+numero;
  end;
  write('la suma es ',suma);
  Readln;
end.

oscarac 27-05-2013 21:19:27

algun moderador que lo edite para verlo bien

ecfisa 27-05-2013 21:26:40

Cita:

Empezado por Jcn (Mensaje 461352)
Hola, necesito ayuda con este programa para que sume numeros primos entre dos limites pedidos, la cual tiene un error.

Código Delphi [-]
...
    {aqui esta el error}
    IF (numero) mod 2= 0 and (numero<>2 then
...

Hola Jcn.

Si, en esa línea hay un error. Debería ser:
Código Delphi [-]
  if (numero mod 2 = 0) and (numero <> 2) then

Tambíen vas a encontrar otro en:
Código Delphi [-]
  until factor>Sqrt(numero) or primo = False;
Sería:
Código Delphi [-]
  until (factor > Sqrt(numero)) or not primo;
Luego queda saber si ejecuta su cometido...

Saludos. :)

Jcn 27-05-2013 21:33:13

gracias nuevamente, no se proque no me di cuenta de eso.

nlsgarcia 28-05-2013 01:39:20

Jcn,

Cita:

Empezado por Jcn
...sume numeros primos entre dos limites pedidos...

Revisa este código:
Código Delphi [-]
procedure SumNumberPrime(RangoI, RangoF : Integer);
var
   i,j : Integer;
   rn : integer;
   Prime : Boolean;
   SumPrime : Int64;

begin

   SumPrime := 0;

   for i := RangoI to RangoF do
   begin

      Prime := True;

      rn := Trunc(sqrt(i));

      for j := 2 to rn do
      begin
         if (i mod j) = 0 then
         begin
            Prime := False;
            break;
         end;
      end;

      if Prime then
         SumPrime := SumPrime + i;

   end;

   Showmessage(Format('La Suma de los Números Primos entre %d y %d es: %d',[RangoI, RangoF, SumPrime]));

end;
El código anterior realiza la sumatoria de los números primos contenidos entre los limites (RangoI, RangoF) del procedure SumNumberPrime.

Espero sea útil :)

Nelson.


La franja horaria es GMT +2. Ahora son las 00:46:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi