Fixnum e numeri primi in rubino
-
23-08-2019 - |
Domanda
Prima mi accingo a scrivere questo me stesso, qualcuno ha visto un'implementazione rubino del seguente comportamento?
puts 7.nextprime(); #=> 11
puts 7.previousprime(); #=> 5
puts 7.isprime(); #=> true
Ovviamente questo genere di cose sarebbe brutto per i grandi numeri, ma per gli interi mai superiore poche migliaia (l'istanza comune per me) un'implementazione ragionevole è fattibile, da qui la domanda.
Soluzione
Rubino viene fornito con una classe Prime
built-in che permette di eseguire iterazioni primi a partire da 1, ma non vedo alcun modo per inizializzare con un valore iniziale diverso da 1, né un controllo predicato per determinare se un numero è primo. Direi andare per esso, anche se si dovrebbe tenere a mente che la matematica in Ruby può essere lento e se le prestazioni è un fattore che può essere meglio considerare la scrittura come un'estensione di Java C o. Ecco un esempio di come utilizzare RubyInline per generare numeri primi in C .
Inoltre, vi consiglio di evitare di utilizzare il nome del metodo 7.isprime
-. La convenzione in Ruby è 7.prime?
Altri suggerimenti
Date un'occhiata ai frammenti trovati qui . Si potrebbe dare un vantaggio iniziale.