primes-utils 2.5.1 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +4 -3
- data/lib/primes/utils.rb +15 -5
- data/lib/primes/utils/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43371077c9ef9173d24033c811151c290b8ae381
|
4
|
+
data.tar.gz: 6c1f1e13987dfe96194589646bd0923f563de871
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2e56490823fa11298cbffd0249286405b9df64474786f8789cdb1ae3792be4b4228f29ad260e537b669710a1f1947728e73a8c709cd6d2954839ef55175228a
|
7
|
+
data.tar.gz: 406d1c0bf6ed02fa0baa6a58eca6db05de476d8ff450c8c027782f0489ebd87a8921a26e57c81042eaab9f0d11ee3be1ac374710c5b547c4ef91b8848a9a93fc
|
data/README.md
CHANGED
@@ -135,9 +135,9 @@ n=10**8; (25*n).primescnt => 121443371
|
|
135
135
|
**primenth(p=7) or nthprime(p=7)**
|
136
136
|
|
137
137
|
Return the value of the (absolute value of) nth prime.
|
138
|
-
Default Strictly Prime (SP) Prime Generator (PG)
|
138
|
+
Default Strictly Prime (SP) Prime Generator (PG) is adaptively selected.
|
139
139
|
Can change SP PG used on input. Acceptable primes range: [3 - 13].
|
140
|
-
Indexed nth primes now upto
|
140
|
+
Indexed nth primes now upto 2.01 billionth.
|
141
141
|
Also see `Error Handling`.
|
142
142
|
|
143
143
|
```
|
@@ -157,7 +157,7 @@ Displays a list of all the `primes-utils` methods available for your system.
|
|
157
157
|
Use as `n.primes_utils` where n is any `class Integer` value.
|
158
158
|
|
159
159
|
```
|
160
|
-
0.primes_utils => "prime? primemr? primes primesf primesmr primescnt primescntf primescntmr primenth|nthprime factors|prime_division"
|
160
|
+
0.primes_utils => "prime? primemr? primes primesf primesmr primescnt primescntf primescntmr primenth|nthprime factors|prime_division primes_utils"
|
161
161
|
```
|
162
162
|
|
163
163
|
## Error Handling
|
@@ -193,6 +193,7 @@ All the `primes-utils` methods are `instance_methods` for `class Integer`.
|
|
193
193
|
|
194
194
|
## History
|
195
195
|
```
|
196
|
+
2.6.0 – much, much better adaptive pg selection algorithm used in select_pg
|
196
197
|
2.5.1 – corrected minor error in select_pg
|
197
198
|
2.5.0 – 9 more index primes under the 110-millionth in nths; fixed Ruby 1.8 incompatibility in primes;
|
198
199
|
better|simpler technique for select_pg, significant speed increases for large ranges; used now
|
data/lib/primes/utils.rb
CHANGED
@@ -359,7 +359,7 @@ module Primes
|
|
359
359
|
end
|
360
360
|
end
|
361
361
|
# determine prms array parameters and starting location value m for start_num
|
362
|
-
split_arrays ? (prms = prms_range; maxprms = max_range; m=0) : m=pcs2start
|
362
|
+
split_arrays ? (prms = prms_range; maxprms = max_range; m=0) : m = pcs2start
|
363
363
|
[prms, m, modks, residues, rescnt, pcs2start, maxprms, rs] # parameters output
|
364
364
|
end
|
365
365
|
|
@@ -444,10 +444,20 @@ module Primes
|
|
444
444
|
end
|
445
445
|
|
446
446
|
def select_pg(num, start_num) # adaptively select PG
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
447
|
+
range = num - start_num
|
448
|
+
pg = 5
|
449
|
+
if start_num <= Math.sqrt(num).to_i # for one array of primes upto N
|
450
|
+
pg = 7 if num > 50*10**4
|
451
|
+
pg = 11 if num > 305*10**5
|
452
|
+
else # for split array cases
|
453
|
+
pg = 7 if ((10**6...10**7).cover? range and start_num < 10**8) or
|
454
|
+
((10**7...10**8).cover? range and start_num < 10**10) or
|
455
|
+
((10**8...10**9).cover? range and start_num < 10**12) or
|
456
|
+
(range >= 10**9 and start_num < 10**14)
|
457
|
+
pg = 11 if ((10**8...10**9).cover? range and start_num < 10**10) or
|
458
|
+
(range >= 10**9 and start_num < 10**11)
|
459
|
+
end
|
460
|
+
primes = [2,3,5,7,11,13].select! {|p| p <= pg}
|
451
461
|
[primes, primes.reduce(:*)] # [excluded primes, mod] for PG
|
452
462
|
end
|
453
463
|
|
data/lib/primes/utils/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: primes-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jabari Zakiya
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|