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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top