Sha256: 5731938263530d534fedb95207efe62559c30dac8da0bb2aa9cde2acfd6f8b34

Contents?: true

Size: 1.87 KB

Versions: 4

Compression:

Stored size: 1.87 KB

Contents

describe Integer, "#hyperperfect?" do
  # http://www.research.att.com/~njas/sequences/A000396
  PERFECT = [6,28,496,8128,33550336,8589869056,137438691328,
             2305843008139952128,
             2658455991569831744654692615953842176,
             191561942608236107294793378084303638130997321548169216]


  it "returns true for a 1-hyperperfect (perfect) number" do
    PERFECT.first(5).each do |number|
      number.should be_hyperperfect
    end
  end

  it "returns false for a non-1-hyperperfect (non-perfect) number" do
    ((1..2000).to_a - PERFECT).sample(5).each do |number|
      number.should_not be_hyperperfect
    end
  end

  it "returns true for 6-hyperperfect numbers with an argument of 6" do
    # http://www.research.att.com/~njas/sequences/A028499
    [301,16513,60110701,1977225901].each do |number|
      number.hyperperfect?(6).should be_true
    end
  end

  it "returns false for non-6-hyperperfect numbers with an argument of 6" do
    [302,6].each do |number|
      number.hyperperfect?(6).should be_false
    end
  end

  it "returns true for 18-hyperperfect numbers with an argument of 18" do
    # http://www.research.att.com/~njas/sequences/A028501
    [1333,1909,2469601,893748277].each do |number|
      number.hyperperfect?(18).should be_true
    end
  end

  it "returns false for non-18-hyperperfect numbers with an argument of 18" do
    [6,1334].each do |number|
      number.hyperperfect?(18).should be_false
    end
  end

  it "returns true for 2772-hyperperfect numbers with an argument of 2772" do
    # http://www.research.att.com/~njas/sequences/A028502
    [95295817,124035913,749931337,4275383113].each do |number|
      number.hyperperfect?(2772).should be_true
    end
  end

  it "returns false for non-2722-hyperperfect numbers with an argument of 2722" do
    [6,95295816].each do |number|
      number.hyperperfect?(2772).should be_false
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
numb-0.3.3 spec/hyperperfect_spec.rb
numb-0.3.2 spec/hyperperfect_spec.rb
numb-0.3.1 spec/hyperperfect_spec.rb
numb-0.3.0 spec/hyperperfect_spec.rb