primes-utils 2.5.1 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|