missing-math 0.1.2 → 0.1.3

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.
@@ -138,8 +138,8 @@ module MissingMath
138
138
  end
139
139
 
140
140
  # Returns an array of an integer's factors
141
- # @param boolean include_one To exclude the number 1 from the output, set to false
142
- def factors(include_one=true)
141
+ # @param boolean include_one Default is to exclude the number 1 from the output; to include set to false
142
+ def factors(include_one=false)
143
143
  throw "Not an Integer" if !self.is_i?
144
144
  last = self
145
145
  i = include_one ? 1 : 2
@@ -156,11 +156,12 @@ module MissingMath
156
156
  end
157
157
 
158
158
  # Returns an array of the integer's prime factors
159
- def prime_factors
160
- ceil = (self / 2).floor
161
- primes = MissingMath.esieve(ceil)
162
- factors = primes.collect { |i| self % i == 0 }
163
- return factors
159
+ # @param boolean force_new Force new module variable @esieve generation. Default uses module variable @esieve if it hasn't been set
160
+ def prime_factors(force_new=false)
161
+ ceil = (self / 2).ceil
162
+ primes = MissingMath.esieve(ceil, force_new)
163
+ factors = primes.collect { |i| i if self % i == 0 && i <= ceil }
164
+ return factors.compact.uniq
164
165
  end
165
166
  end
166
167
 
@@ -170,17 +171,21 @@ module MissingMath
170
171
 
171
172
  # Generates a prime sieve with max value n
172
173
  # @param integer n Max value of sieve
174
+ # @param boolean force_new Force new module variable @esieve generation. Default uses module variable @esieve if it hasn't been set
173
175
  # Example: MissingMath.esieve(1000) => [2, 3, 5, ...]
174
- def self.esieve(n)
175
- a = (0..n).to_a
176
- a[0] = nil
177
- a[1] = nil
178
- a.each do |i|
179
- next unless i
180
- break if i * i > n
181
- (i * i).step(n, i) { |m| a[m] = nil}
176
+ def self.esieve(n, force_new=false)
177
+ if !@esieve || force_new
178
+ a = (0..n).to_a
179
+ a[0] = nil
180
+ a[1] = nil
181
+ a.each do |i|
182
+ next unless i
183
+ break if i * i > n
184
+ (i * i).step(n, i) { |m| a[m] = nil}
185
+ end
186
+ @esieve = a.compact
182
187
  end
183
- return a.compact
188
+ return @esieve
184
189
  end
185
190
 
186
191
  end
@@ -1,3 +1,3 @@
1
1
  module MissingMath
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: missing-math
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-02 00:00:00.000000000 Z
12
+ date: 2013-12-04 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A library of missing math functions.
15
15
  email: mail@enorganik.com