Module: MissingMath

Defined in:
lib/missing_math.rb,
lib/missing_math/version.rb

Defined Under Namespace

Modules: Integer, Number

Constant Summary collapse

VERSION =
"0.1.4"

Class Method Summary collapse

Class Method Details

.esieve(n, force_new = false) ⇒ Object

Generates a prime sieve with max value n Example: MissingMath.esieve(1000) => [2, 3, 5, …]

Parameters:

  • integer

    n Max value of sieve

  • boolean

    force_new Force new module variable @esieve generation. Default uses module variable @esieve if it hasn’t been set



236
237
238
239
240
241
242
243
244
245
246
247
248
249
# File 'lib/missing_math.rb', line 236

def self.esieve(n, force_new=false)
  if !@esieve || force_new
    a = (0..n).to_a
    a[0] = nil
    a[1] = nil
    a.each do |i|
      next unless i
      break if i * i > n
      (i * i).step(n, i) { |m| a[m] = nil}
    end
    @esieve = a.compact
  end
  return @esieve
end

.fibonacci(n, true_fib = true, force_new = false) ⇒ Object

Generates an array holding an n-length fibonacci sequence Example: MissingMath.fibonacci(5) => [0, 1, 1, 2, 3]

Parameters:

  • integer

    n Length of sequence to generate

  • boolean

    true_fib Use the true fibonacci sequence (0, 1, 1, 2…) or skip the first two values (1, 2, 3, 5…). Default true

  • boolean

    force_new Force new module variable @fib generation. Default uses module variable @fib if it hasn’t been set



256
257
258
259
260
261
262
263
264
# File 'lib/missing_math.rb', line 256

def self.fibonacci(n, true_fib=true, force_new=false)
  if !@fib || force_new
    @fib = true_fib ? [0, 1] : [1, 2]
    while @fib.length < n
      @fib << @fib[-1] + @fib[-2]
    end
  end
  return @fib
end