fixnum e números primos em ruby
-
23-08-2019 - |
Pergunta
Antes de definir a ponto de escrever isso mesmo, alguém viu uma implementação rubi do seguinte comportamento?
puts 7.nextprime(); #=> 11
puts 7.previousprime(); #=> 5
puts 7.isprime(); #=> true
Obviamente, este tipo de coisa seria feio para grandes números, mas para inteiros não superior a um milhar poucos (a instância comum para mim) uma implementação sensata é factível, daí a pergunta.
Solução
rubi vem com um built-in class Prime
que permite que você para percorrer primos a partir de 1, mas não vejo nenhuma maneira de inicializar-lo com um valor inicial diferente de 1, nem um cheque predicado para determinar se ou não um número é primo. Eu digo para ela ir, mas você deve ter em mente que a matemática em Ruby pode ser lento e se o desempenho é um fator que você pode ser melhor fora pensando em escrever-lo como uma extensão de C ou Java. Aqui está um exemplo de como usar RubyInline para gerar números primos em C .
Além disso, eu sugiro que você evite usar o nome do método 7.isprime
-. A convenção em Ruby é 7.prime?
Outras dicas
Veja os trechos encontrados aqui . Eles poderiam dar-lhe um avanço.