module MissingMath

Constants

VERSION

Public Class Methods

esieve(n, force_new=false) click to toggle source

Generates a prime sieve with max value n @param integer n Max value of sieve @param boolean force_new Force new module variable @esieve generation. Default uses module variable @esieve if it hasn't been set Example: MissingMath.esieve(1000) => [2, 3, 5, …]

# 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) click to toggle source

Generates an array holding an n-length fibonacci sequence @param integer n Length of sequence to generate @param boolean true_fib Use the true fibonacci sequence (0, 1, 1, 2…) or skip the first two values (1, 2, 3, 5…). Default true @param boolean force_new Force new module variable @fib generation. Default uses module variable @fib if it hasn't been set Example: MissingMath.fibonacci(5) => [0, 1, 1, 2, 3]

# 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