Ejemplo
Deseamos calcular el MCD entre 120, 180 y 440.Pasos a seguir:
- Primero calculamos el MCD entre 120 y 180. Y se obtiene que MCD(120, 180)=60
- Segundo calculamos el MCD entre 60 y 440. Y se obtine que MCD(60, 440)=20
Por tanto, el MCD de los tres números es:
- MCD(120, 180, 440) = 20
El código HTML es el siguiente.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Máximo común divisor</title>
</head>
<body>
<h1>Máximo común divisor (MCD)</h1>
<h2>Dados dos o tres números calcular el MCD</h2>
<p>Por favor, introduzca los números. El tercer número es opcional.</p>
<p><input id="num1" value="150"></p>
<p><input id="num2" value="120"></p>
<p><input id="num3"><i> (opcional)</i></p>
<button type="button" onclick="myFunction()">Calcular</button>
<p id="calculo"></p>
<p id="calculo2"></p>
<p id="calculo3"></p>
<script type="text/javascript" src="mcdmcm2.js">
</script>
<p>Máximo Común Dividor (MCD) = comunes a la mínima potencia</p>
<p>mínimo común múltiplo (mcm) = comunes y no comunes a la máxima potencia</p>
</body>
</html>
El código JS es el siguiente.
var x,y,z,mcd,text,text2,text3,resulta;
function myFunction() {
x = parseFloat(document.getElementById("num1").value);
y = parseFloat(document.getElementById("num2").value);
z = parseFloat(document.getElementById("num3").value);
document.getElementById("calculo").style.color="#0A8A0A";
if (isNaN(x) || isNaN(y) || x%1!==0 || y%1!==0 || x<1 || y<1 ) {
text = "Es necesario introducir dos números válidos. El tercer valor es opcional.";
document.getElementById("calculo").style.color="#FF0000";
var text2 = "";
} else {
factorizame(x);
text = resulta+"<br>";
factorizame(y);
text += resulta+'<br>';
if (!isNaN(z) && z%1==0 && z>=1){
factorizame(z);
text += resulta+"<br>";
}
if (!isNaN(x) && !isNaN(y) && isNaN(z)){ //solo x e y
calculaMCD(x,y);
} else if (!isNaN(x) && !isNaN(y) && !isNaN(z)){ //intervienen x, y, z
calculaMCD(x,y);
calculaMCD(mcd,z); //propiedad recursiva para calcular el MCD de tres números
}
var text2="MCD="+mcd
}
document.getElementById("calculo").innerHTML = text;
document.getElementById("calculo2").innerHTML = text2;
document.getElementById("calculo2").style.color="blue";
var text3=x+' / '+mcd+' = '+x/mcd+'<br>'+y+' / '+mcd+' = '+y/mcd+'<br>';
if (!isNaN(z)){text3 += z+' / '+mcd+' = '+z/mcd+'<br>'}
document.getElementById("calculo3").innerHTML = text3;
document.getElementById("calculo3").style.color="magenta";
}
function calculaMCD(n1,n2){
if (n2>n1){ //queremos que n1 sea el mayor
var aux=n1;
n1=n2;
n2=aux
}
var a=n1;
var b=n2;
do { //algoritmo de Euclides
mcd=n2;
var resto=n1%n2;
n1=n2;
n2=resto;
} while (resto!=0);
}
function factorizame(n){
resulta=n+' = ';
var contador=0;
while (n%2===0) {
n=n/2;
contador++;
}
if (contador>1){
resulta += 2+"<sup>"+contador+"</sup> × ";
} else if (contador===1){
resulta += "2 × ";
}
for (var i=3;i<=n;i=i+2){
contador=0;
while (n%i===0) {
n=n/i;
contador++;
}
if (contador>1){
resulta += i+"<sup>"+contador+"</sup> × ";
} else if (contador===1){
resulta += i+" × ";
}
}
resulta += 1;
}
Puedes probar el programa en el siguiente enlace.