Calculando o MMC de N números.
Implementei um algoritmo de fatoração por números primos, e o resto foi fácil.
<?php
abstract class Arithmetic {
/**
* Retorna o mínimo múltiplo comúm dos valores contidos no array $numbers.
*
* @param array $numbers A matriz de números.
* @return int O mínimo múltiplo comúm.
*/
static public function mmc( array $numbers ) {
$ret = 1;
foreach( array_unique( $numbers ) as $number )
$ret *= array_product( array_unique( self::prime_factoring( (int) $number ) ) );
return $ret;
}
/**
* Decompõe $number em seus fatores primos.
*
* @param int $number O número.
* @return array Matriz bidimensional contendo os fatores.
*/
static private function prime_factoring( $number ) {
$ret = array();
$checker = 2;
while( ( $checker * $checker ) <= $number ) {
if ( ( $number % $checker ) == 0 ) {
$ret[] = $checker;
$number /= $checker;
} else {
++$checker;
}
}
if ( $number != 1 )
$ret[] = $number;
return $ret;
}
}
Utilizando:
echo Arithmetic::mmc( array( 2, 6, 6, 8 ) );
Retorna:
24
Discussão (14)
Carregando comentários...