Sha256: d04948ea45b40616579b13332ac2fd243c97fb2ff74ee10b9facb1115dd7f5a6

Contents?: true

Size: 360 Bytes

Versions: 20

Compression:

Stored size: 360 Bytes

Contents

class Integer
  def leonardo?
    n = self
    return 1 if n <= 1
    phi = Hash[[:+, :-].map{|sign| [sign, (1.send(sign, Math.sqrt(5)) / 2) ]}]
    divisor = phi[:+] - phi[:-]
    (1..n).any? do |m|
      sum = ((2 * ( ( phi[:+]**(m+1) - phi[:-]**(m+1) ).fdiv( divisor ) )) - 1)
      return false unless sum.finite?
      sum.floor == self
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
numb-0.186.0 lib/numb/leonardo.rb
numb-0.185.0 lib/numb/leonardo.rb
numb-0.184.0 lib/numb/leonardo.rb
numb-0.181.0 lib/numb/leonardo.rb
numb-0.170.0 lib/numb/leonardo.rb
numb-0.152.0 lib/numb/leonardo.rb
numb-0.138.0 lib/numb/leonardo.rb
numb-0.125.0 lib/numb/leonardo.rb
numb-0.114.0 lib/numb/leonardo.rb
numb-0.111.0 lib/numb/leonardo.rb
numb-0.109.0 lib/numb/leonardo.rb
numb-0.99.0 lib/numb/leonardo.rb
numb-0.96.0 lib/numb/leonardo.rb
numb-0.89.0 lib/numb/leonardo.rb
numb-0.84.0 lib/numb/leonardo.rb
numb-0.77.0 lib/numb/leonardo.rb
numb-0.72.1 lib/numb/leonardo.rb
numb-0.72.0 lib/numb/leonardo.rb
numb-0.68.0 lib/numb/leonardo.rb
numb-0.63.0 lib/numb/leonardo.rb