Skip to content

Instantly share code, notes, and snippets.

@rodrigocorreaecastro
Forked from tiagodavi/recursividade.php
Last active March 30, 2022 11:42
Show Gist options
  • Select an option

  • Save rodrigocorreaecastro/e1f8fc193f2f41defca3f8ec95093a98 to your computer and use it in GitHub Desktop.

Select an option

Save rodrigocorreaecastro/e1f8fc193f2f41defca3f8ec95093a98 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