Matlab - MCD por descomposicion de factores primos.

 
Vista:
sin imagen de perfil

MCD por descomposicion de factores primos.

Publicado por Juan (2 intervenciones) el 09/03/2017 19:11:37
Hola muy buenas, tengo que sacar el MCD por la descomposición de sus numeros primos.
Consigo que me calcule los primos de cada numero y me los guarde en un vector por separado, ahora quisiera comparar los dos vectores y multiplicar los repetidos.
Ejemplo el MCD entre "24" y"30" = 6, teniendo en cuenta que el vector de descomposicon de 24= [2 2 2 3] y el de 30 =[2 3 5]

El codigo que tengo de momento es este:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
x1 = input('Primer entero: ');
x2 = input('Segundo entero: ');
descom_primos_x1 = [];
descom_primos_x2 = [];
for n1 = primes(x1);
    while (rem(x1,n1) == 0),
    x1 = x1/n1;
    descom_primos_x1 = [descom_primos_x1 n1];
    end
if (x1==1),
    break
end
end
for n2 = primes(x2);
    while (rem(x2,n2) == 0),
        x2 = x2/n2;
        descom_primos_x2 = [descom_primos_x2 n2];
    end
if (x2==1),
    break
end
end
display (descom_primos_x1);
display (descom_primos_x2);

A quien me pueda ayudar, le estoy muy agradecido de ante mano.
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 JOSE JEREMIAS CABALLERO
Val: 8.042
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

MCD por descomposicion de factores primos.

Publicado por JOSE JEREMIAS CABALLERO (5780 intervenciones) el 09/03/2017 21:43:16
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
clear
 x1 = input('Primer entero: ');
 x2 = input('Segundo entero: ');
descom_primos_x1 = [];
descom_primos_x2 = [];
for n1 = primes(x1);
    while (rem(x1,n1) == 0),
    x1 = x1/n1;
    descom_primos_x1 = [descom_primos_x1 n1];
    end
if (x1==1),
    break
end
end
for n2 = primes(x2);
    while (rem(x2,n2) == 0),
        x2 = x2/n2;
        descom_primos_x2 = [descom_primos_x2 n2];
    end
if (x2==1),
    break
end
end
 display (descom_primos_x1);
 display (descom_primos_x2);
primoss=primes(1000);
N=length(max([descom_primos_x1  descom_primos_x2  ]));
i=1;
k=1;
while i<=N
a=    find(descom_primos_x1==primoss(i));
b=    find(descom_primos_x2==primoss(i));
if length(a)>=1  &&  length(b)>=1
    primos(k)=descom_primos_x1(a(1));
    descom_primos_x1(a)=[];
    descom_primos_x2(b)=[];
    N=length([descom_primos_x1  descom_primos_x2  ]);
    i=i-1;
    k=k+1;
end
i=i+1;
end
primos
MCD=prod(primos)

1
2
3
4
5
6
7
8
9
10
11
>> maximo_comun_divisor
Primer entero: 24
Segundo entero: 30
descom_primos_x1 =
     2     2     2     3
descom_primos_x2 =
     2     3     5
primos =
     2     3
MCD =
     6

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

MCD por descomposicion de factores primos.

Publicado por Juan (2 intervenciones) el 15/03/2017 16:03:06
Muchas gracias JOSE JEREMIAS CABALLERO.
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