Pular para o conteúdo principal

Postagens

Mostrando postagens de janeiro, 2009

Números Primos + MMC + MDC + Ruby

Segue abaixo um exemplo de implementação de gerador de Números Primos + MMC ( Mínimo Múltiplo Comum ) + MDC ( Máximo Divisor Comum ) em ruby. É um resultado de uma prova de lógica que um amigo meu teve que fazer em java. Colaborações prestimosas de Cirillo Ferreira. require 'Mathn' class Numeric def multiplos(ate = 500) (1..ate).to_a.map{|v| self*v} end def divisores(ate = 500) (1..ate).to_a.map{|v| v if (self%v == 0)}.compact end end module Math def self.mmc(*valor) compara( valor.inject([]){|h, i| h << i.multiplos} ).first end def self.mdc(*valor) compara( valor.inject([]){|h, i| h << i.divisores } ).last end def self.nmr_primos numeros_primos = [] (2..501).each{|i| numeros_primos << (2..i).detect{|j| j%j ==0 && i%j==0} } numeros_primos.uniq! end private def self.compara(arr) arr.inject(arr[0]){|ac, i| ac & i} end end Math::mmc(3,5,8) => 120 Math::mmc(3,5,8,9) => 360 Os métodos mmc e mdc são métodos que aceitam parâmetros indetermi