On Thursday, April 2, 2015 at 7:54:13 PM UTC-4, jzakiya wrote: > > > "primes-utils" is a Rubygem which provides a suite of extremely fast > (relative to Ruby's standard library) utility methods for testing and > generating primes. > > Install it the usual way: > > $ gem install primes-utils > > Then require inside ruby as: > > > require 'primes/utils' > > The suite consists of the following methods: > > 1)prime? > Determine if the absolute value of an integer is prime. Return 'true' or > 'false'. > This replaces the `prime?` method in the `prime.rb` standard library. > > 2)primemr?(k=20) > Determine if the absolute value of an integer is prime using Miller-Rabin > test. Return 'true' or 'false'. > Miller-Rabin here is super fast, but probabilistic (not deterministic), > primality test.https://en.wikipedia.org/wiki/Miller-Rabin_primality_test > The method's reliability can be increased by increasing the default input > parameter of k=20. > > 3)factors(p=13) or prime_division(p=13) > Determine the prime factorization of the absolute value of an integer. > This replaces the `prime division` method in the `prime.rb` standard library. > Returns an array of arrays of factors and exponents: [[2,4],[3,2],[5,1]] => > (2^4)(3^2)(5^1) = (16)(9)(5) = 720 > Default Strictly Prime (SP) Prime Generator (PG) used here is P13. > Can change SP PG used on input. Acceptable primes range (3 - 19). > > 4)primes(start_num=0) > Create an array of primes from the absolute value range (|start_num| - > |end_num|). > The order of the range doesn't matter if both given: start.primes end <=> > end.prime start > If only one parameter used, then all the primes upto that number will be > returned. > > 5)primenth(p=11) or nthprime(p=11) > Return the value of the nth (absolute value) prime. > Default Strictly Prime (SP) Prime Generator (PG) used here is P11. > Can change SP PG used on input. Acceptable primes range (3 - 19). > > Coding Implementations > The methods `primemr`, `nthprime/primenth`, and `primes` are coded in > pure ruby. The methods `prime?` and `prime_division/factors` have two > implementations. Each has a pure ruby implementation, and also a hybrid > implementation which uses the Unix cli command `factor` if its available > on the host OS. `factor` [5] is an extremely fast C coded factoring > algorithm, part of the GNU Core Utilities package [4]. > > Upon loading, the gem tests if the desired `factor` command exists on > the host OS. If so, it wraps a system call to it and uses it for > `prime?` and `prime_division/factors`. If not, it uses a fast pure ruby > implementation for each method based on the Sieve of Zakiya (SoZ)[1][2][3]. > > References > [1]https://www.scribd.com/doc/150217723/Improved-Prim... > <https://www.scribd.com/doc/150217723/Improved-Primality-Testing-and-Factorization-in-Ruby-revised> > [2]https://www.scribd.com/doc/228155369/The-Segmented... > <https://www.scribd.com/doc/228155369/The-Segmented-Sieve-of-Zakiya-SSoZ> > [3]https://www.scribd.com/doc/73385696/The-Sieve-of-Zakiya > [4]https://en.wikipedia.org/wiki/GNU_Core_Utilities > [5]https://en.wikipedia.org/wiki/Factor_(Unix) > > Author > Jabari Zakiya > > >
Version 2.1.0 now available. Added new methods primesf, primesmr, primescnt, primescntf, primescntmr. All methods significantly faster, more memory efficient, and can work with larger numbers. https://rubygems.org/gems/primes-utils -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-talk@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/e64759af-b677-4aa0-b0d2-5b76c80eba7d%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.