Skip to content

Instantly share code, notes, and snippets.

@tiagodavi
Created November 18, 2011 22:40
Show Gist options
  • Save tiagodavi/1378001 to your computer and use it in GitHub Desktop.
Save tiagodavi/1378001 to your computer and use it in GitHub Desktop.
Função recursiva para calcular o MDC (máximo divisor comum)
<?php
/*
@author: Tiago Davi
@blog: tiagodavi.blogspot.com
//fonte : somatematica.com.br
CÁLCULO DO M.D.C. PELO PROCESSO DAS DIVISÕES SUCESSIVAS
Regra prática:
1º) dividimos o número maior pelo número menor;
48 / 30 = 1 (com resto 18)
2º) dividimos o divisor 30, que é divisor da divisão anterior, por 18, que é o resto da divisão anterior, e assim sucessivamente;
30 / 18 = 1 (com resto 12)
18 / 12 = 1 (com resto 6)
12 / 6 = 2 (com resto zero - divisão exata)
3º) O divisor da divisão exata é 6.
Logo m.d.c.(48,30) = 6.
*/
//Função recursiva para calcular o MDC (máximo divisor comum)
function mdc($x,$y){
$a = max($x,$y);
$b = min($x,$y);
if($a%$b == 0){
return $b;
}else{
return mdc($b,($a%$b));
}
}
//Não importa a ordem
echo mdc(48,30); //6
echo mdc(30,48); //6
/*
CÁLCULO DO M.M.C EFICIENTE (mínimo múltiplo comum)
fonte:wikipedia
Regra prática:
mmc(x,y) = (($x*$y)/(mdc($x,$y)));
*/
function mmc($x,$y){
return (($x*$y)/(mdc($x,$y)));
}
echo mmc(4,6); //12
echo mmc(4,15); //60
echo mmc(12,30); //60
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment