fixnum et nombres premiers en rubis
-
23-08-2019 - |
Question
Avant que je mets sur le point d'écrire moi-même, a vu quelqu'un une mise en œuvre rubis du comportement suivant?
puts 7.nextprime(); #=> 11
puts 7.previousprime(); #=> 5
puts 7.isprime(); #=> true
Il est évident que ce genre de chose serait moche pour un grand nombre, mais pour les entiers ne dépassant jamais quelques milliers (l'instance commune pour moi) une mise en œuvre sensible est faisable, d'où la question.
La solution
Ruby est livré avec une classe de Prime
intégré qui vous permet de parcourir par les nombres premiers à partir de 1, mais je ne vois aucun moyen de l'initialiser avec une valeur de départ autre que 1, ni une vérification de prédicats pour déterminer si oui ou non un certain nombre est premier. Je dirais que pour aller, bien que vous devriez garder à l'esprit que les mathématiques en Ruby peut être lent et si la performance est un facteur que vous pourriez être mieux considérer l'écriture comme un C ou d'extension Java. Voici un exemple de comment utiliser RubyInline pour générer des nombres premiers en C .
En outre, je vous suggère d'éviter d'utiliser le nom de la méthode 7.isprime
-. La convention Ruby est 7.prime?