primes-utils 1.0.3 → 1.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4c974a531ffdb56d1907751ff2df0c5f451105c2
4
- data.tar.gz: b9616c2850ded0be6a1cd23b58f2b5b4be1cf97c
3
+ metadata.gz: 6395f48acbfe0ee860220c35690d48b9c45aa045
4
+ data.tar.gz: 16150fa85ec9bf964012c59f04257e76665ddb79
5
5
  SHA512:
6
- metadata.gz: 828be099bf80cc65d68f4d64ba6e1ce338dc7eff05eec21d6c4d9767a2880062d6905e1bcb2bcdca8b48ce2ae1a400d20769c7be127334ecc5a8f63f39d804d0
7
- data.tar.gz: fa374d9ac9276859bfed141be5bcc160c907c999683d6ab5fa2a64448cea28ca393e52d67af0c5a83dd8aeb349b2cf9ae7d9b24824cf28d22cfdcd09245a8591
6
+ metadata.gz: 873cd552aa258335f00100627cfa5a2a4e65f3a3ac09bb5b39ebc88e4bd1b9f3039b2406b6c862d077f79f580f08094c9f5e7779dcbbd6b3ed5795a01bf36234
7
+ data.tar.gz: cad68673964dce20ecc8f876d75b908a29ab2537d0ddc757fe632cb5e23ce30b6fc86660a11c371f2d687db144e217ba1860b03cdc92eb795104ed8d743a892e
data/README.md CHANGED
@@ -31,6 +31,8 @@ This replaces the `prime?` method in the `prime.rb` standard library.
31
31
  101.prime? => true
32
32
  100.prime? => false
33
33
  -71.prime? => true
34
+ 0.prime? => false
35
+ 1.prime? => false
34
36
  ```
35
37
  **primemr?(k=20)**
36
38
  Determine if the absolute value of an integer is prime using Miller-Rabin test. Return 'true' or 'false'.
@@ -43,6 +45,8 @@ The method's reliability can be increased by increasing the default input parame
43
45
  1111111111111111111.primemr?(50) => true
44
46
  11111111111111111111.primemr? => false
45
47
  -3333333333333333333.primemr? => false
48
+ 0.prime? => false
49
+ 1.prime? => false
46
50
  ```
47
51
  **factors(p=13) or prime_division(p=13)**
48
52
  Determine the prime factorization of the absolute value of an integer.
@@ -57,6 +61,8 @@ Can change SP PG used on input. Acceptable range are primes from 3 - 19.
57
61
  123456789.factors 17 => [[3, 2], [3607, 1], [3803, 1]]
58
62
  123456789.factors(17) => [[3, 2], [3607, 1], [3803, 1]]
59
63
  -12345678.factors => [[2, 1], [3, 2], [47, 1], [14593, 1]]
64
+ 0.factors => []
65
+ 1.factors => []
60
66
  ```
61
67
  **primes(start_num=0)**
62
68
  Create an array of primes from the range start_num - end_num.
@@ -82,6 +88,7 @@ Can change SP PG used on input. Acceptable range are primes from 3 - 19.
82
88
  1500000.nthprime => 23879519
83
89
  2000000.nthprime 13 => 32452843
84
90
  -500000.nthprime => 7368787
91
+ 0.nthprime => 0
85
92
  ```
86
93
  ## Coding Implementations
87
94
  The methods `primemr`, `nthprime/primenth`, and `primes` are coded in pure ruby.
@@ -1,5 +1,5 @@
1
1
  module Primes
2
2
  module Utils
3
- VERSION = "1.0.3"
3
+ VERSION = "1.0.4"
4
4
  end
5
5
  end
data/lib/primes/utils.rb CHANGED
@@ -106,7 +106,7 @@ module Primes
106
106
  primes = []
107
107
 
108
108
  n = self.abs # the desired nth prime
109
- return seeds[n-1] if n < 14
109
+ return n != 0 ? seeds[n-1] : 0 if n < seeds.size
110
110
  numb = 22*n # approx value need to check primes up to
111
111
 
112
112
  # find primes <= Pn, compute modPn then Prime Gen residues for Pn
@@ -166,12 +166,12 @@ module Primes
166
166
  num, start_num = start_num, num if start_num > num
167
167
 
168
168
  primes = [2,3,5,7,11,13] # P13 excluded primes lists
169
+ plast = primes.last # last prime in primes
170
+ return primes.select {|p| p >= start_num && p <= num} if num <= plast
169
171
 
170
- return primes.select {|p| p >= start_num && p <= num} if num <= 13
172
+ mod = primes.reduce(:*) # P13 modulus value 2*3*5*7*11*13
171
173
 
172
- mod = 30030 # P13 modulus value 2*3*5*7*11*13
173
-
174
- residues=[1]; 17.step(mod,2) {|i| residues << i if mod.gcd(i) == 1}
174
+ residues=[1]; plast.step(mod,2) {|i| residues << i if mod.gcd(i) == 1}}
175
175
  rescnt = residues.size # number of residues
176
176
  residues << mod+1 # to make algorithm easier
177
177
 
@@ -202,11 +202,11 @@ module Primes
202
202
  end
203
203
  end
204
204
  # the prms array now has all the primes positions for primes r1..N
205
- primes = start_num <= 13 ? primes.drop_while {|p| p < start_num} : []
206
- k = start_num / mod
207
- modk = mod*k
208
- m = rescnt*k
209
- r = 0
205
+ primes = start_num <= plast ? primes.drop_while {|p| p < start_num} : []
206
+ k = (start_num-2).abs/mod # start_num's residue group value
207
+ modk = mod*k # start_num's mod group value
208
+ m = rescnt*k # number of prms elements upto kth resgroup
209
+ r = 0 # begin process at start of resgroup
210
210
  while m < maxprms
211
211
  r +=1; if r > rescnt; r=1; modk +=mod end
212
212
  if prms[m]
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: primes-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
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-04-02 00:00:00.000000000 Z
11
+ date: 2015-04-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
- prerelease: false
16
15
  requirement: !ruby/object:Gem::Requirement
17
16
  requirements:
18
17
  - - "~>"
19
18
  - !ruby/object:Gem::Version
20
19
  version: '1.9'
20
+ type: :development
21
+ prerelease: false
21
22
  version_requirements: !ruby/object:Gem::Requirement
22
23
  requirements:
23
24
  - - "~>"
24
25
  - !ruby/object:Gem::Version
25
26
  version: '1.9'
26
- type: :development
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
- prerelease: false
30
29
  requirement: !ruby/object:Gem::Requirement
31
30
  requirements:
32
31
  - - "~>"
33
32
  - !ruby/object:Gem::Version
34
33
  version: '10.0'
34
+ type: :development
35
+ prerelease: false
35
36
  version_requirements: !ruby/object:Gem::Requirement
36
37
  requirements:
37
38
  - - "~>"
38
39
  - !ruby/object:Gem::Version
39
40
  version: '10.0'
40
- type: :development
41
41
  description: 'Methods: prime?, primemr?, primes, nthprime/primenth, factors/prime_division'
42
42
  email:
43
43
  - jzakiya@gmail.com