Pascal/Turbo Pascal - Problema al calcular divisores con free pascal

 
Vista:

Problema al calcular divisores con free pascal

Publicado por Roberto (1 intervención) el 20/09/2016 23:33:22
Buenos días, estoy haciendo un programa que calcule divisores, por ejemplo si pongo los números 25 y 30, el programa desplegará: 25: 5
26: 2 13
27: 3 9
28: 2 7 14
29: primo
30: 2 3 5 6 10 15
Mi programa como lo tengo escrito devuelve: 25:5 26:13 27:3 9 28:4 7 14 29:30:3 5 10 15
No sé por qué no muestra ni el número 2 ni sé cómo hacer para que los números vayan apareciendo hacia abajo como en el ejemplo. Qué puede ser? Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Problema al calcular divisores con free pascal

Publicado por xve (25 intervenciones) el 21/09/2016 08:18:04
Hola Roberto, puedes mostrar tu código para ver donde puede fallar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al calcular divisores con free pascal

Publicado por ramon (2158 intervenciones) el 21/09/2016 22:15:35
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
{Mira esto}
 
program divisores;
 uses
    crt;
 
  var
    w, num1, num2 : integer;
 
    function esprimo(nn : integer) : boolean;
     var
       d, n, c : integer;
       es : boolean;
     begin
        es := true;
        c := 2;
        if nn mod c = 0 then
        es := false
      else
        begin
           c := 3;
           while (es = true) and (c < nn) do
           begin
              if nn mod c = 0 then
              es := false;
              d := c;
              c := c + 2;
           end;
         end;
         if c = 2 then
         d := c;
         esprimo := es;
       end;
 
 
 
 
 
   function divisoresde_un_numero(n:integer):integer;
   var
      i : integer;
   begin
      write(n,' : ');
      if esprimo(n) then
      write('Primo');
      for i := 2 to n - 1 do
      begin
        if n mod i = 0 then
        write(i,' ');
    end;
  end;
 
 
 
 
   begin
      clrscr;
      num1 := 25;
      num2 := 30;
      for w := num1 to num2 do
      begin
         divisoresde_un_numero(w);
         writeln;
      end;
      readkey;
   end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar