Descomposición en factores primos
De Ejercicios
Contenido |
Enunciado
Se quire realizar un programa al que se le de un número positivo y devuelva su descomposición como producto de fatores primos.
Soluciones
Programa en Pascal por lperez
program desompone_primos; uses crt; type vector=array[1..30] of integer; var num,i:integer; d:vector; lon:integer; (*****************) function Primo(n:integer):boolean; (*ENTRADAS: n entero positivo SALIDAS: verdad si n es primo y falso si no lo es*) var i:integer; begin i:=2; while i<n do if (n mod i)=0 then i:=n+1 else i:=i+1; if i=n then Primo:=true else Primo:=false; end; (*****************) procedure Descomp(n:integer;var sal:vector;var tam:integer); (*ENTRADAS: n, entoro positivo, n£mero a descomponer SALIDAS: sal, un array con los factores primos de n tam: el n£mero de factores primos de n, tama¤o de sal*) var a:integer; begin if Primo(n) then begin tam:=1; sal[tam]:=n; end else begin a:=2; tam:=0; while n>1 do if Primo(a) then begin if (n mod a)=0 then begin tam:=tam+1; sal[tam]:=a; n:=n div a; end else a:=a+1; end else a:=a+1; end; end; (*****************) (* ENTRADAS: num, un entero positivo SALIDAS: su descomposici¢n como producto de primos *) begin clrscr; write('Introduce un entero positivo:'); readln(num); Descomp(num,d,lon); writeln('Su descomposici¢n en primos es:'); for i:=1 to lon do begin write(d[i]); if i<lon then write('*'); end; repeat until keypressed; end.
Comentario
El programa se ha descompuesto de forma modular. De forma que existe una función que se encarga de ver si un número es primo o no y un procedimiento que se encarga de obtener los factores primos de un número.