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.
Os métodos mmc e mdc são métodos que aceitam parâmetros indeterminado graças a uma coisa, da linguagem ruby, chamada operador splat, que é aquele asterisco na assinatura do método. Tem a finalidade de compactar os parâmetros num única array.
Este programa é um pequeno incremento da classe Numeric. Onde é adicionado dois métodos necessários para a resolução dos métodos mmc e mdc que são: multiplos e divisores.
Após é adicionado no módulo Math (por isso a chamada inicial require 'Mathn'), como métodos de classe, o mmc e o mdc.
O método comparar é um método usado localmente (private) para retornar de um array de arrays os valores comuns.
obs.: O método gerar_nmr_primos não é usado. Foi criado apenas para ilustração e fertilização das mentes.
Mais informações sobre a linguagem acesse: O que é Ruby...
-Depois desse pragmatismo todo dá até para tomar um café com mais calma...
Abraço,
e até a próxima.
Aosssssssssssssssssssssss pião dá hora d+++
ResponderExcluirFicou bem menor...
E vc já tem mais de um tópico... uahauhua... ta forte hem... rs... já adicionei aqui nos meus favoritos, vou visitar de vez em qdo agora... continue escrevendo... com groovy acho que ficaria ainda menor!
[]s
até mais
Bem legal suas soluções. Esses dias precisei de um gerador de primos, fiz um, não ficou tão elegante quanto o seu, mas está um pouco mais rápido. De uma olhada:
ResponderExcluir'
def primos(inicio,fim)
primos = []
inicio.upto(fim) do |num|
if num == 1
primos << 1
else
next if num % 2 == 0
teste = num/2
num.times do
break if num % teste == 0
teste -= 1
end
primos << num if teste <= 1
end
end
return primos
end
'
Tá, ai.
Falou, até mais!
Legal Mateus, muito bom!!!
ResponderExcluirQuem diria que poderiamos juntar as palvras 'programação' e 'elegância' no mesmo contexto, hein...
Um abraço.