Pascal/Turbo Pascal - Urgente! Mostrar divisores de un numero

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 5 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Urgente! Mostrar divisores de un numero

Publicado por Nicolas (1 intervención) el 04/09/2016 18:14:29
Hola, necesito un programa que ingresados dos numeros, me muestre los divisores de cada numero del intervalo dado, si no tiene es primo.

Ejemplo:
Ingreso 10 y 20
me muestra:
10: 2, 5, 10
11: primo
12: 2, 3, 4, etc
.
.etc
.
20: 2, etc

Es para free pascal. Agradezco cualquier ayuda.
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

Urgente! Mostrar divisores de un numero

Publicado por el profesor (1 intervención) el 04/09/2016 22:00:58
Señor Nicolás los laboratorios de programación se hacen de forma individual, acaso usted no leyó el reglamento que impone el InCo de Facultad de Ingeniería? vaya a pensar solito y a llorar al cuartito..
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

Urgente! Mostrar divisores de un numero

Publicado por dario (42 intervenciones) el 06/09/2016 16:17:59
Te dejo el codigo que busca los divisores de los numeros. Ya tu te encargas de hacer la funcion para ver si es primo o no.
Saludos.

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
uses crt;
var
    i,inicial,final:integer;
{-----------------------------------}
function divisores(n:integer):integer;
var
    i:integer;
begin
    for i:=2 to n do begin
        if n mod i = 0 then
            write(i,' ');
    end;
end;
{--------------------------------------}
begin
    clrscr;
    write('Numero inicial : ');
    readln(inicial);
    write('Numero final: ');
    readln(final);
    for i:=inicial to final do begin
        write(i,': ');
        divisores(i);
        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

Urgente! Mostrar divisores de un numero

Publicado por David (224 intervenciones) el 06/09/2016 20:10:35
Todo Ok, aunque te puedes ahorrar algunas comparaciones. Donde pones for i:=2 to n do podrías poner for i:=1 to (n div 2) do ya que un número nunca será divisible por un número mayor que su mitad. Otra forma de solucionarlo sería hacer una función con la criba de eratóstenes, pero quizás eso te resulte más complejo.
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

Urgente! Mostrar divisores de un numero

Publicado por dario (42 intervenciones) el 07/09/2016 07:18:18
El for i:=2 to no do es para todos los divisores del numero incluido este.
Ejemplo:
para 10 los divisores son 2, 5 y 10 (incluido el 10),

Si hago el for i:=2 to (n div 10) no me incluye el numero (n).
Saludos.
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
Imágen de perfil de James
Val: 6
Ha aumentado su posición en 6 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Urgente! Mostrar divisores de un numero

Publicado por James (3 intervenciones) el 07/09/2016 08:04:31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
program divisores_de_n;
uses crt;
var
     n, i : integer;
begin
     clrscr;
     write('Ingrese el No. para el que desea saber sus divisores: '); readln(n);
     n:= abs(n);
     i := 1;
     if n<>0 then
     begin
        writeln('Los divisores de ',n,' son: ');
        repeat
             if (n mod i) = 0 then
                 write(i,' ');
              i := i + 1
        until i>n
     end
     else
            writeln('Todos los números naturales excepto 0 son divisores de ',n);
     repeat until keypressed
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

Urgente! Mostrar divisores de un numero

Publicado por Sito (1 intervención) el 07/09/2016 09:21:57
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
Program mostrar_divisores_de_un_numero;
Uses crt;
var
     a,b,c,inicio,fin: integer;
 
function divisores(n:integer): integer;
var
      i,j,num: integer;
begin
      if n<>0 then
      begin
          write(i,': ')
          num := abs(n);
          i := 1;
          j := 0;
          repeat
               if (n mod i) = 0 then
               begin
                   write(i,', ');
                   j := j+1
               end;
               i := i+1
          until i>num;
          if (j=2) then
                write(' Primo')
       end
       else
            write(num,': Todos los números enteros excepto 0 son sus divisores');
       writeln
end;
 
begin
    clrscr;
     write('Ingrese los valores de inicio y fin: ');
     read(a,b); writeln;
     if a > b then
     begin
             inicio := b;
             fin := a
      else
             inicio := a;
             fin := b
       end;
       for c := inicio to fin do
              divisores(c);
        repeat until keypressed
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

Urgente! Mostrar divisores de un numero

Publicado por David (224 intervenciones) el 07/09/2016 18:03:48
N ya sabes que lo va a ser, con lo cual sólo tendrías que hacer su presentación en pantalla y te ahorrarías un montón de comparaciones. Sería tan sencillo como que una vez acabado el bucle for pongas un write(n) o writeln(n)
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

Urgente! Mostrar divisores de un numero

Publicado por juan (1 intervención) el 07/09/2016 19:12:39
Y si quisiera mostrar un numero determinado de divisores?
Por ejemplo que si un numero N tiene mas de 5 divisores, muestre unicamente los 5 primeros?
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
Imágen de perfil de james
Val: 6
Ha aumentado su posición en 6 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Urgente! Mostrar divisores de un numero

Publicado por james (3 intervenciones) el 10/09/2016 06:40:33
para ello basta con realizar el siguiente cambio en el repeat:

1
2
3
4
5
6
7
8
9
10
repeat
        if (n mod i) = 0 then
        begin
             write(i,', ');
             j := j+1
        end;
        if j=5 then
           i := num;
         i:= i+1
until i>num;

Este cambio provocará que la rutina se interrumpa luego del despiegue de los primeros 5 divisores.

Además hay que modificar la instrución de la 7a. línea de la función, en vez de write(i,': ') debe ser write(n,': ');
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
Imágen de perfil de james
Val: 6
Ha aumentado su posición en 6 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Urgente! Mostrar divisores de un numero

Publicado por james (3 intervenciones) el 10/09/2016 06:48:49
Totalmente de acuerdo, basta con realizar los siguientes cambios en el bucle del programa original:

1
2
3
4
5
6
repeat
        if (n mod i) = 0 then
            write(i,' ');
        i := i+1
until i > (n div 2);
writeln(n)
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