[ Foro de Pascal ]

Array de números primos

21-Oct-2018 13:32
Invitado (Manu)
1 Respuestas

Crea un array dinámico (sin límite de tamaño) de números enteros grandes (LongInt). Luego pide un numero N entero y positivo y da ese tamaño al array y lo rellenas con los N primeros numeros primos.

Buenas, tengo un problema a la hora de terminar un bucle while en pascal del ejercicio en cuestion paso aqui el codigo para ver si me podeis ayudar


program Ejercicio07;
uses crt,SysUtils,wincrt;

function es_primo(num:longint):boolean;
var

  divisor:integer;
Begin
   es_primo:=true;
   divisor:=2;
   while (divisor<num) and es_primo do
   begin
     if num mod divisor = 0 then
          es_primo:=false;
     divisor:=divisor+1
   end;
end;

type
  tprimo = record
    primo : longint;
  end;

var
  a:array of tprimo;
  n:longint;
  count:longint;
begin
  count:=1;
  write('Escribe un numero entero positivo: '); readln(n);
  SetLength(a, n);
  while count >= 1 do
  begin
    if es_primo(count)
    then begin
      write(a[count].primo);
      Inc(count);
    end;
    if count >= 0 then begin
      write('Cuenta de numeros primos realizada');
    end;
  end;
end. 


el ultimo if count parece que no va bien y me crea un bucle infinito de write


28-Oct-2018 00:02
Nacho Cabanes (+84)

Claro. Si "count" empieza valiendo 1, y lo incrementas en cada pasada, "while count >= 1" será verdadero siempre, y no se interrumpirá.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)