Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.ruby > #7120
| Newsgroups | comp.lang.ruby |
|---|---|
| Date | 2015-06-19 14:05 -0700 |
| References | <141cbf02-c25c-4cc6-a380-4d34c896fe54@googlegroups.com> |
| Message-ID | <694b4546-cd59-4524-a4da-150347031a41@googlegroups.com> (permalink) |
| Subject | Re: [ANN] primes-utils rubygem |
| From | jzakiya@gmail.com |
On Thursday, April 2, 2015 at 7:48:54 PM UTC-4, jza...@gmail.com 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... > [2]https://www.scribd.com/doc/228155369/The-Segmented... > [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 Friday, June 19, 2015 Now available, primes-utils 2.2.0, the Juneteenth release: (https://en.wikipedia.org/wiki/Juneteenth). New in 2.2.0 Refactored methods `primes`, `primescnt`, `primenth|nthprime`. Changed default PGs on some methods to significantly increase speed. Implemented mem error handling for `primes`, `primescnt`, `primenth` to gracefully fail with informative error messages. Upon failure methods return `nil` value. Increased to 1.6 billion, indexed nth primes used in `primenth` to create ranges to find nth prime within, extending max possible nth prime. Removed max nth prime ceiling. Only limitations now are available memory and time. Upon loading with Ruby 1.8 `require 'rubygems'` is invoked to enable installing gems.
Back to comp.lang.ruby | Previous | Next — Previous in thread | Next in thread | Find similar
[ANN] primes-utils rubygem jzakiya@gmail.com - 2015-04-02 16:48 -0700 Re: [ANN] primes-utils rubygem jzakiya@gmail.com - 2015-05-25 07:56 -0700 Re: [ANN] primes-utils rubygem jzakiya@gmail.com - 2015-06-19 14:05 -0700 Re: [ANN] primes-utils rubygem jzakiya@gmail.com - 2015-07-01 08:40 -0700 Re: [ANN] primes-utils rubygem jzakiya@gmail.com - 2015-12-14 12:23 -0800 Re: [ANN] primes-utils rubygem jzakiya@gmail.com - 2015-12-28 07:36 -0800
csiph-web