numb 0.125.0 → 0.138.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.125.0
1
+ 0.138.0
@@ -0,0 +1,14 @@
1
+ # coding: utf-8
2
+ class Integer
3
+ # TODO: Consider http://cims.nyu.edu/~harvey/bernmm/
4
+ def bernoulli
5
+ return -0.5.to_r if self == 1
6
+ return 0.to_r if odd?
7
+ a = []
8
+ 0.upto(self) do |m|
9
+ a[m] = Rational(1, m + 1)
10
+ m.downto(1){|j| a[j - 1] = j * (a[j - 1] - a[j])}
11
+ end
12
+ a.first
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ # coding: utf-8
2
+ class Integer
3
+ def brilliant?
4
+ pfacts = prime_factors
5
+ pfacts.size == 2 and pfacts.map{|f| f.to_s.size}.uniq.size == 1
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ class Integer
2
+ def centered_square?
3
+ centered_n_gonal? 4
4
+ end
5
+ end
@@ -0,0 +1,8 @@
1
+ # coding: utf-8
2
+ class Integer
3
+ def choose(k)
4
+ k > self ? 0 : factorial / (k.factorial * (self - k).factorial)
5
+ end
6
+
7
+ alias :binomial_coefficient :choose
8
+ end
@@ -0,0 +1,10 @@
1
+ class Integer
2
+ def e_divisors
3
+ return [1] if self == 1
4
+ pfacts = primaries
5
+ comb = pfacts.map{|p,a| (1..a).select{|b| a.divides?(b)}.map{|b| p**b}}
6
+ comb.flatten.permutation(pfacts.size).select do |perm|
7
+ perm.each_with_index.all?{|x,i| comb[i].include? x}
8
+ end.map{|perm| perm.reduce(:*)}
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ # coding: utf-8
2
+ class Integer
3
+ def e_perfect?
4
+ return false if odd?
5
+ σe == 2 * self
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ # coding: utf-8
2
+ class Integer
3
+ def entringer(k)
4
+ return 1 if zero? and k.zero?
5
+ return 0 if (self < k or k < 0)
6
+ entringer(k - 1) + (self - 1).entringer(self - k)
7
+ end
8
+ end
9
+
@@ -0,0 +1,6 @@
1
+ # coding: utf-8
2
+ class Integer
3
+ def fermat?
4
+ self > 2 and Math.log2(Math.log2(self - 1)).integer?
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ # coding: utf-8
2
+ class Integer
3
+ def franel
4
+ (0..self).map{|k| choose(k) ** 3 }.reduce(:+)
5
+ end
6
+ end
@@ -0,0 +1,8 @@
1
+ # coding: utf-8
2
+ class Integer
3
+ def genocchi
4
+ return 1 if self == 1
5
+ return 0 if odd?
6
+ (2 * (1 - 2**self) * bernoulli).to_i
7
+ end
8
+ end
@@ -0,0 +1,4 @@
1
+ # coding: utf-8
2
+ class Integer
3
+ alias :gnomonic? :odd?
4
+ end
@@ -0,0 +1,7 @@
1
+ class Integer
2
+ def mersenne?
3
+ zero? or repunit?(2)
4
+ end
5
+
6
+ alias :fermat_lucas? :mersenne?
7
+ end
@@ -1,5 +1,5 @@
1
1
  class Integer
2
2
  def mersenne_prime?
3
- prime? and repunit?(2)
3
+ mersenne? and prime?
4
4
  end
5
5
  end
@@ -0,0 +1,8 @@
1
+ # coding: utf-8
2
+ class Integer
3
+ def n_step_fibonacci(n)
4
+ return 0 if self <= (n - 2)
5
+ return 1 if self <= (n - 1)
6
+ (1..n).map{|i| (self-i).n_step_fibonacci(n) }.reduce(:+)
7
+ end
8
+ end
@@ -5,6 +5,8 @@ class Integer
5
5
 
6
6
  # Returns the number of divisors of self
7
7
  def τ
8
+ # TODO: Consider something simpler, and perhaps faster, like
9
+ # primaries.map(&:last).map(&:succ).reduce(:*)
8
10
  n = self
9
11
  return @nod if defined?(@nod)
10
12
  @nod = (1..isqrt).
data/lib/numb/powerful.rb CHANGED
@@ -5,4 +5,6 @@ class Integer
5
5
  divisors = self.divisors
6
6
  divisors.select {|d| d.prime? }.all?{|prime| divisors.include? (prime ** 2)}
7
7
  end
8
+
9
+ alias :handsome? :powerful?
8
10
  end
data/lib/numb/pronic.rb CHANGED
@@ -3,4 +3,6 @@ class Integer
3
3
  return false unless even? and (positive? or zero?)
4
4
  (Math.sqrt(succ).round - sqrt.round) == 1
5
5
  end
6
+
7
+ alias :heteromecic? :pronic?
6
8
  end
@@ -1,5 +1,5 @@
1
1
  class Integer
2
2
  def sophie_germain_prime?
3
- prime? and ((2*self) + 1).prime?
3
+ prime? and (2*self).succ.prime?
4
4
  end
5
5
  end
@@ -0,0 +1,7 @@
1
+ class Integer
2
+ def subfactorial
3
+ zero? ? 1 : self * (self - 1).subfactorial + (-1)**self
4
+ end
5
+
6
+ alias :derangements :subfactorial
7
+ end
@@ -0,0 +1,10 @@
1
+ # coding: utf-8
2
+ class Integer
3
+ def σe
4
+ # TODO: If squarefree, the sum of a number’s e-divisors is the number
5
+ # itself. Do we gain anything significant by special-casing this?
6
+ e_divisors.reduce(:+)
7
+ end
8
+
9
+ alias :sum_of_e_divisors :σe
10
+ end
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ describe Integer, "#bernoulli" do
3
+ # A000367
4
+ @numerators = [1, 1, -1, 1, -1, 5, -691, 7, -3617, 43867, -174611, 854513,
5
+ -236364091, 8553103, -23749461029, 8615841276005, -7709321041217,
6
+ 2577687858367, -26315271553053477373, 2929993913841559,
7
+ -261082718496449122051]
8
+ # A002445
9
+ @denominators = [1, 6, 30, 42, 30, 66, 2730, 6, 510, 798, 330, 138, 2730, 6,
10
+ 870, 14322, 510, 6, 1919190, 6, 13530, 1806, 690, 282, 46410,
11
+ 66, 1590, 798, 870, 354, 56786730, 6, 510, 64722, 30, 4686,
12
+ 140100870, 6, 30, 3318, 230010]
13
+
14
+ @seq = @numerators.zip(@denominators).map{|n,d| Rational(n,d)}
15
+ @seq = ([0.to_r] * @numerators.size).zip(@seq).flatten
16
+ @seq.shift
17
+ @seq[1] = -Rational(1, 2)
18
+ @seq.each_with_index do |r, n|
19
+ it "returns #{r} for #{n}" do
20
+ n.bernoulli.should == r
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,21 @@
1
+ # coding: utf-8
2
+ describe Integer, "#brilliant?" do
3
+ # A078972
4
+ @seq = [4,6,9,10,14,15,21,25,35,49,121,143,169,187,209,
5
+ 221,247,253,289,299,319,323,341,361,377,391,403,
6
+ 407,437,451,473,481,493,517,527,529,533,551,559,
7
+ 583,589,611,629,649,667,671,689,697,703,713,731,
8
+ 737,767,779,781]
9
+
10
+ @seq.each do |n|
11
+ it "returns true for brilliant number #{n}" do
12
+ n.should be_brilliant
13
+ end
14
+ end
15
+
16
+ @seq.to_seq.invert.sample(100).each do |n|
17
+ it "returns false for non-brilliant number #{n}" do
18
+ n.should_not be_brilliant
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ describe Integer, "#centered_square?" do
2
+ # A001844
3
+ @seq = [1,5,13,25,41,61,85,113,145,181,221,265,313,365,
4
+ 421,481,545,613,685,761,841,925,1013,1105,1201,
5
+ 1301,1405,1513,1625,1741,1861,1985,2113,2245,2381,
6
+ 2521,2665,2813,2965,3121,3281,3445,3613,3785,3961,
7
+ 4141,4325]
8
+
9
+ @seq.each do |n|
10
+ it "should return true for centered-square number #{n}" do
11
+ n.should be_centered_square
12
+ end
13
+ end
14
+
15
+ @seq.to_seq.invert.sample(100).each do |n|
16
+ it "should return false for non-centered-square number #{n}" do
17
+ n.should_not be_centered_square
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ describe Integer, "#choose" do
3
+ # A007318
4
+ @seq = [
5
+ [1],
6
+ [1, 1],
7
+ [1, 2, 1],
8
+ [1, 3, 3, 1],
9
+ [1, 4, 6, 4, 1],
10
+ [1, 5, 10, 10, 5, 1],
11
+ [1, 6, 15, 20, 15, 6, 1],
12
+ [1, 7, 21, 35, 35, 21, 7, 1],
13
+ [1, 8, 28, 56, 70, 56, 28, 8, 1],
14
+ [1, 9, 36, 84, 126, 126, 84, 36, 9, 1],
15
+ [1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1],
16
+ [1, 11, 55, 165, 330, 462, 462, 330, 165, 55, 11, 1]
17
+ ]
18
+
19
+ @seq.each_with_index do |row, n|
20
+ row.each_with_index do |coeff, k|
21
+ it "returns #{coeff} for Binomial(#{n}, #{k})" do
22
+ n.choose(k).should == coeff
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,41 @@
1
+ describe Integer, "#e_divisors" do
2
+ # A051377
3
+ @sums = [1,2,3,6,5,6,7,10,12,10,11,18,13,14,15,22,17,24,
4
+ 19,30,21,22,23,30,30,26,30,42,29,30,31,34,33,34,
5
+ 35,72,37,38,39,50,41,42,43,66,60,46,47,66,56,60,
6
+ 51,78,53,60,55,70,57,58,59,90,61,62,84,78,65,66,
7
+ 67,102,69,70,71]
8
+
9
+ # A049419
10
+ @counts = [1,1,1,2,1,1,1,2,2,1,1,2,1,1,1,3,1,2,1,2,1,1,1,2,
11
+ 2,1,2,2,1,1,1,2,1,1,1,4,1,1,1,2,1,1,1,2,2,1,1,3,2,
12
+ 2,1,2,1,2,1,2,1,1,1,2,1,1,2,4,1,1,1,2,1,1,1,4,1,1,
13
+ 2,2,1,1,1,3,3,1,1,2,1,1,1,2,1,2,1,2,1,1,1,2,1,2,2,
14
+ 4,1,1]
15
+
16
+ # A157488
17
+ @products = [1,2,3,8,5,6,7,16,27,10,11,72,13,14,15,128,17,
18
+ 108,19,200,21,22,23,144,125,26,81,392,29,30,31,64,33,34,
19
+ 35,46656,37,38,39,400,41,42,43,968,675,46,47,3456,343,500,
20
+ 51,1352,53,324,55,784,57,58,59,1800,61,62,1323,4096]
21
+
22
+ @counts.to_enum.with_index(1) do |count, n|
23
+ e_divisors = n.e_divisors
24
+
25
+ it "returns #{count} e divisors for #{n}" do
26
+ e_divisors.size.should == count
27
+ end
28
+
29
+ if sum = @sums[n-1]
30
+ it "returns e divisors with a sum of #{sum} for #{n}" do
31
+ e_divisors.reduce(:+).should == sum
32
+ end
33
+ end
34
+
35
+ if product = @products[n-1]
36
+ it "returns e divisors with a product of #{product} for #{n}" do
37
+ e_divisors.reduce(:*).should == product
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,21 @@
1
+ # coding: utf-8
2
+ describe Integer, "#e_perfect?" do
3
+ # A054979
4
+ @seq = [36,180,252,396,468,612,684,828,1044,1116,1260,
5
+ 1332,1476,1548,1692,1800,1908,1980,2124,2196,2340,
6
+ 2412,2556,2628,2700,2772,2844,2988,3060,3204,3276,
7
+ 3420,3492,3636,3708,3852,3924,4068,4140,4284,4572,
8
+ 4716]
9
+
10
+ @seq.each do |n|
11
+ it "returns true for e-perfect number #{n}" do
12
+ n.should be_e_perfect
13
+ end
14
+ end
15
+
16
+ @seq.to_seq.invert.sample(100).each do |n|
17
+ it "returns false for non-e-perfect number #{n}" do
18
+ n.should_not be_e_perfect
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ describe Integer, "#entringer" do
3
+ # A008281
4
+ @seq = [
5
+ [1, ],
6
+ [0, 1, ],
7
+ [0, 1, 1, ],
8
+ [0, 1, 2, 2, ],
9
+ [0, 2, 4, 5, 5, ],
10
+ [0, 5, 10, 14, 16, 16, ],
11
+ [0, 16, 32, 46, 56, 61, 61, ],
12
+ [0, 61, 122, 178, 224, 256, 272, 272, ],
13
+ [0, 272, 544, 800, 1024, 1202, 1324, 1385, 1385, ],
14
+ [0, 1385, 2770, 4094, 5296, 6320, 7120, 7664, 7936, 7936],
15
+ ]
16
+
17
+ @seq.each_with_index do |row, a|
18
+ row.each_with_index do |n, b|
19
+ it "returns #{n} for Entringer(#{a}, #{b})" do
20
+ a.entringer(b).should == n
21
+ end
22
+ end
23
+ end
24
+ end
25
+
@@ -0,0 +1,20 @@
1
+ # coding: utf-8
2
+ describe Integer, "#fermat?" do
3
+ # A000215
4
+ @seq = [3,5,17,257,65537,4294967297,18446744073709551617,
5
+ 340282366920938463463374607431768211457,
6
+ 115792089237316195423570985008687907853269984665640564039457584007913129639937,
7
+ 13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084097]
8
+
9
+ @seq.each do |n|
10
+ it "returns true for Fermat number #{n}" do
11
+ n.should be_fermat
12
+ end
13
+ end
14
+
15
+ @seq.to_seq.invert.sample(100).each do |n|
16
+ it "returns false for non-Fermat number #{n}" do
17
+ n.should_not be_fermat
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ # coding: utf-8
2
+ describe Integer, "#franel" do
3
+ # A000172
4
+ @seq = [1,2,10,56,346,2252,15184,104960,739162,5280932,
5
+ 38165260,278415920,2046924400,15148345760,
6
+ 112738423360,843126957056,6332299624282,
7
+ 47737325577620,361077477684436,2739270870994736,
8
+ 20836827035351596]
9
+
10
+ @seq.each_with_index do |franel, n|
11
+ it "returns #{franel} for #{n}" do
12
+ n.franel.should == franel
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,22 @@
1
+ # coding utf-8
2
+ describe Integer, "#genocchi" do
3
+ #A001469
4
+ @seq = [-1,1,-3,17,-155,2073,-38227,929569,-28820619,
5
+ 1109652905,-51943281731,2905151042481,
6
+ -191329672483963,14655626154768697,
7
+ -1291885088448017715,129848163681107301953,
8
+ -14761446733784164001387]
9
+
10
+ (2..(@seq.size * 2)).select(&:even?).each do |n|
11
+
12
+ m_genocchi = (m = n - 1) == 1 ? 1 : 0
13
+ it "returns #{m_genocchi} for #{m}" do
14
+ m.genocchi.should == m_genocchi
15
+ end
16
+
17
+ genocchi = @seq.shift
18
+ it "returns #{genocchi} for #{n}" do
19
+ n.genocchi.should == genocchi
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ # coding: utf-8
2
+ describe Integer, "#gnomonic?" do
3
+ # A005408
4
+ @seq = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,
5
+ 37,39,41,43,45,47,49,51,53,55,57,59,61,63,65,67,
6
+ 69,71,73,75,77,79,81,83,85,87,89,91,93,95,97,99,
7
+ 101,103,105,107,109,111,113,115,117,119,121,123,
8
+ 125,127,129,131]
9
+
10
+ @seq.each do |n|
11
+ it "returns true for gnomonic number #{n}" do
12
+ n.should be_gnomonic
13
+ end
14
+ end
15
+
16
+ @seq.to_seq.invert.each do |n|
17
+ it "returns false for non-gnomonic number #{n}" do
18
+ n.should_not be_gnomonic
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # coding: utf-8
2
+ describe Integer, "#mersenne?" do
3
+ # A000225
4
+ @seq = [0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,
5
+ 16383,32767,65535,131071,262143,524287,1048575,
6
+ 2097151,4194303,8388607,16777215,33554431,
7
+ 67108863,134217727,268435455,536870911,1073741823,
8
+ 2147483647,4294967295]
9
+
10
+ @seq.each do |n|
11
+ it "returns true for Mersenne number #{n}" do
12
+ n.should be_mersenne
13
+ end
14
+ end
15
+
16
+ @seq.to_seq.invert.sample(100).each do |n|
17
+ it "returns false for non-Mersenne number #{n}" do
18
+ n.should_not be_mersenne
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,48 @@
1
+ describe Integer, "#n_step_fibonacci" do
2
+ @seq = {
3
+ # A000045
4
+ 2 => [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,
5
+ 1597,2584,4181,6765,10946,17711,28657,46368,75025,
6
+ 121393,196418,317811,514229,832040,1346269,
7
+ 2178309,3524578,5702887,9227465,14930352,24157817,
8
+ 39088169],
9
+ # A000073
10
+ 3 => [0,0,1,1,2,4,7,13,24,44,81,149,274,504,927,1705,
11
+ 3136,5768,10609,19513,35890,66012,121415,223317,
12
+ 410744,755476,1389537,2555757,4700770,8646064,
13
+ 15902591,29249425,53798080,98950096,181997601,
14
+ 334745777],
15
+ # A000078
16
+ 4 => [0,0,0,1,1,2,4,8,15,29,56,108,208,401,773,1490,
17
+ 2872,5536,10671,20569,39648,76424,147312,283953,
18
+ 547337,1055026,2033628,3919944,7555935,14564533,
19
+ 28074040,54114452,104308960,201061985,387559437,
20
+ 747044834],
21
+ # A001591
22
+ 5 => [0,0,0,0,1,1,2,4,8,16,31,61,120,236,464,912,1793,
23
+ 3525,6930,13624,26784,52656,103519,203513,400096,
24
+ 786568,1546352,3040048,5976577,11749641,23099186,
25
+ 45411804,89277256,175514464,345052351,678355061,
26
+ 1333610936],
27
+ # A001592
28
+ 6 => [0,0,0,0,0,1,1,2,4,8,16,32,63,125,248,492,976,
29
+ 1936,3840,7617,15109,29970,59448,117920,233904,
30
+ 463968,920319,1825529,3621088,7182728,14247536,
31
+ 28261168,56058368,111196417,220567305,437513522,
32
+ 867844316],
33
+ # A122189
34
+ 7 => [0,0,0,0,0,0,1,1,2,4,8,16,32,64,127,253,504,1004,
35
+ 2000,3984,7936,15808,31489,62725,124946,248888,
36
+ 495776,987568,1967200,3918592,7805695,15548665,
37
+ 30972384,61695880,122895984,244804400,487641600,
38
+ 971364608],
39
+ }
40
+
41
+ @seq.each_pair do |n, ks|
42
+ ks.first(10 + n).each_with_index do |x, k|
43
+ it "returns #{x} for the #{k}#{k.ordinal} #{n}-step Fibonacci number" do
44
+ k.n_step_fibonacci(n).should == x
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,14 @@
1
+ describe Integer, "#subfactorial" do
2
+ # A000166
3
+ @seq = [1,0,1,2,9,44,265,1854,14833,133496,1334961,
4
+ 14684570,176214841,2290792932,32071101049,
5
+ 481066515734,7697064251745,130850092279664,
6
+ 2355301661033953,44750731559645106,
7
+ 895014631192902121,18795307255050944540]
8
+
9
+ @seq.each_with_index do |sf, n|
10
+ it "returns #{sf} for #{n}" do
11
+ n.subfactorial.should == sf
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ # coding: utf-8
2
+ describe Integer, "#σe" do
3
+ # A051377
4
+ @sums = [1,2,3,6,5,6,7,10,12,10,11,18,13,14,15,22,17,24,
5
+ 19,30,21,22,23,30,30,26,30,42,29,30,31,34,33,34,
6
+ 35,72,37,38,39,50,41,42,43,66,60,46,47,66,56,60,
7
+ 51,78,53,60,55,70,57,58,59,90,61,62,84,78,65,66,
8
+ 67,102,69,70,71]
9
+
10
+ @sums.to_enum.with_index(1) do |sum, n|
11
+ it "returns #{sum} for #{n}" do
12
+ n.σe.should == sum
13
+ end
14
+ end
15
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: numb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.125.0
4
+ version: 0.138.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Run Paint Run Run
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-03-15 00:00:00 +00:00
12
+ date: 2010-03-18 00:00:00 +00:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -56,11 +56,13 @@ files:
56
56
  - lib/numb/base.rb
57
57
  - lib/numb/beastly.rb
58
58
  - lib/numb/bell.rb
59
+ - lib/numb/bernoulli.rb
59
60
  - lib/numb/betrothed.rb
60
61
  - lib/numb/binomial.rb
61
62
  - lib/numb/biquadratic.rb
62
63
  - lib/numb/blum.rb
63
64
  - lib/numb/breeder.rb
65
+ - lib/numb/brilliant.rb
64
66
  - lib/numb/brown.rb
65
67
  - lib/numb/carmichael.rb
66
68
  - lib/numb/carol.rb
@@ -69,7 +71,9 @@ files:
69
71
  - lib/numb/centered_hexagonal.rb
70
72
  - lib/numb/centered_n_gonal.rb
71
73
  - lib/numb/centered_pentagonal.rb
74
+ - lib/numb/centered_square.rb
72
75
  - lib/numb/centered_triangular.rb
76
+ - lib/numb/choose.rb
73
77
  - lib/numb/composite.rb
74
78
  - lib/numb/congruum.rb
75
79
  - lib/numb/consecutive.rb
@@ -88,21 +92,28 @@ files:
88
92
  - lib/numb/dodecagonal.rb
89
93
  - lib/numb/doubly_even.rb
90
94
  - lib/numb/dudeney.rb
95
+ - lib/numb/e_divisors.rb
96
+ - lib/numb/e_perfect.rb
91
97
  - lib/numb/eban.rb
92
98
  - lib/numb/economical.rb
93
99
  - lib/numb/emrip.rb
100
+ - lib/numb/entringer.rb
94
101
  - lib/numb/equidigital.rb
95
102
  - lib/numb/euclid.rb
96
103
  - lib/numb/evil.rb
97
104
  - lib/numb/extravagant.rb
98
105
  - lib/numb/factorial.rb
99
106
  - lib/numb/factorion.rb
107
+ - lib/numb/fermat.rb
100
108
  - lib/numb/fermat_pseudoprime.rb
101
109
  - lib/numb/fibonacci.rb
110
+ - lib/numb/franel.rb
102
111
  - lib/numb/friendly.rb
103
112
  - lib/numb/frugal.rb
104
113
  - lib/numb/full_reptend_prime.rb
114
+ - lib/numb/genocchi.rb
105
115
  - lib/numb/giuga.rb
116
+ - lib/numb/gnomonic.rb
106
117
  - lib/numb/goldbach.rb
107
118
  - lib/numb/hamming.rb
108
119
  - lib/numb/happy.rb
@@ -129,6 +140,7 @@ files:
129
140
  - lib/numb/lucas.rb
130
141
  - lib/numb/lucas_carmichael.rb
131
142
  - lib/numb/lychrel.rb
143
+ - lib/numb/mersenne.rb
132
144
  - lib/numb/mersenne_prime.rb
133
145
  - lib/numb/minimal.rb
134
146
  - lib/numb/mms_pair.rb
@@ -136,6 +148,7 @@ files:
136
148
  - lib/numb/modulo_order.rb
137
149
  - lib/numb/myriagonal.rb
138
150
  - lib/numb/n_gonal.rb
151
+ - lib/numb/n_step_fibonacci.rb
139
152
  - lib/numb/narcissistic.rb
140
153
  - lib/numb/next_prev_prime.rb
141
154
  - lib/numb/nivenmorphic.rb
@@ -192,7 +205,9 @@ files:
192
205
  - lib/numb/squared_triangular.rb
193
206
  - lib/numb/strictly_non_palindromic.rb
194
207
  - "lib/numb/st\xC3\xB8rmer.rb"
208
+ - lib/numb/subfactorial.rb
195
209
  - lib/numb/sublime.rb
210
+ - lib/numb/sum_of_e_divisors.rb
196
211
  - lib/numb/sum_of_squares.rb
197
212
  - lib/numb/sum_of_unitary_divisors.rb
198
213
  - lib/numb/super_poulet.rb
@@ -234,11 +249,13 @@ files:
234
249
  - spec/numb/base_spec.rb
235
250
  - spec/numb/beastly_spec.rb
236
251
  - spec/numb/bell_spec.rb
252
+ - spec/numb/bernoulli_spec.rb
237
253
  - spec/numb/betrothed_spec.rb
238
254
  - spec/numb/binomial_spec.rb
239
255
  - spec/numb/biquadratic_spec.rb
240
256
  - spec/numb/blum_spec.rb
241
257
  - spec/numb/breeder_spec.rb
258
+ - spec/numb/brilliant_spec.rb
242
259
  - spec/numb/brown_spec.rb
243
260
  - spec/numb/carmichael_spec.rb
244
261
  - spec/numb/carol_spec.rb
@@ -247,7 +264,9 @@ files:
247
264
  - spec/numb/centered_hexagonal_spec.rb
248
265
  - spec/numb/centered_n_gonal_spec.rb
249
266
  - spec/numb/centered_pentagonal_spec.rb
267
+ - spec/numb/centered_square_spec.rb
250
268
  - spec/numb/centered_triangular_spec.rb
269
+ - spec/numb/choose_spec.rb
251
270
  - spec/numb/composite_spec.rb
252
271
  - spec/numb/congruum_spec.rb
253
272
  - spec/numb/coprime_spec.rb
@@ -266,9 +285,12 @@ files:
266
285
  - spec/numb/dodecagonal_spec.rb
267
286
  - spec/numb/doubly_even_spec.rb
268
287
  - spec/numb/dudeney_spec.rb
288
+ - spec/numb/e_divisors_spec.rb
289
+ - spec/numb/e_perfect_spec.rb
269
290
  - spec/numb/eban_spec.rb
270
291
  - spec/numb/economical_spec.rb
271
292
  - spec/numb/emrip_spec.rb
293
+ - spec/numb/entringer_spec.rb
272
294
  - spec/numb/equidigital_spec.rb
273
295
  - spec/numb/euclid_spec.rb
274
296
  - spec/numb/evil_spec.rb
@@ -276,11 +298,15 @@ files:
276
298
  - spec/numb/factorial_spec.rb
277
299
  - spec/numb/factorion_spec.rb
278
300
  - spec/numb/fermat_pseudoprime_spec.rb
301
+ - spec/numb/fermat_spec.rb
279
302
  - spec/numb/fibonacci_spec.rb
303
+ - spec/numb/franel_spec.rb
280
304
  - spec/numb/friendly_spec.rb
281
305
  - spec/numb/frugal_spec.rb
282
306
  - spec/numb/full_reptend_prime_spec.rb
307
+ - spec/numb/genocchi_spec.rb
283
308
  - spec/numb/giuga_spec.rb
309
+ - spec/numb/gnomonic_spec.rb
284
310
  - spec/numb/goldbach_spec.rb
285
311
  - spec/numb/hamming_spec.rb
286
312
  - spec/numb/happy_spec.rb
@@ -309,10 +335,12 @@ files:
309
335
  - spec/numb/lychrel_spec.rb
310
336
  - spec/numb/maris_mcgwire_sosa_pair_spec.rb
311
337
  - spec/numb/mersenne_prime_spec.rb
338
+ - spec/numb/mersenne_spec.rb
312
339
  - spec/numb/minimal_spec.rb
313
340
  - spec/numb/mobius_spec.rb
314
341
  - spec/numb/modulo_order_spec.rb
315
342
  - spec/numb/myriagonal_spec.rb
343
+ - spec/numb/n_step_fibonacci_spec.rb
316
344
  - spec/numb/narcissistic_spec.rb
317
345
  - spec/numb/nivenmorphic_spec.rb
318
346
  - spec/numb/noncototient_spec.rb
@@ -369,7 +397,9 @@ files:
369
397
  - spec/numb/squared_triangular_spec.rb
370
398
  - spec/numb/strictly_non_palindromic_spec.rb
371
399
  - "spec/numb/st\xC3\xB8rmer_spec.rb"
400
+ - spec/numb/subfactorial_spec.rb
372
401
  - spec/numb/sublime_spec.rb
402
+ - spec/numb/sum_of_e_divisors_spec.rb
373
403
  - spec/numb/sum_of_squares_spec.rb
374
404
  - spec/numb/sum_of_unitary_divisors_spec.rb
375
405
  - spec/numb/super_poulet_spec.rb
@@ -431,10 +461,15 @@ test_files:
431
461
  - spec/numb/base_spec.rb
432
462
  - spec/numb/proth_spec.rb
433
463
  - spec/numb/prime_signature_spec.rb
464
+ - spec/numb/mersenne_spec.rb
434
465
  - spec/numb/unitary_divisor_spec.rb
466
+ - spec/numb/centered_square_spec.rb
435
467
  - spec/numb/primitive_pseudoperfect_spec.rb
436
468
  - spec/numb/polydivisible_spec.rb
469
+ - spec/numb/choose_spec.rb
470
+ - spec/numb/n_step_fibonacci_spec.rb
437
471
  - spec/numb/strictly_non_palindromic_spec.rb
472
+ - spec/numb/gnomonic_spec.rb
438
473
  - spec/numb/cyclic_spec.rb
439
474
  - spec/numb/iban_spec.rb
440
475
  - spec/numb/equidigital_spec.rb
@@ -472,6 +507,7 @@ test_files:
472
507
  - spec/numb/zerofree_spec.rb
473
508
  - spec/numb/eban_spec.rb
474
509
  - spec/numb/automorphic_spec.rb
510
+ - spec/numb/fermat_spec.rb
475
511
  - spec/numb/minimal_spec.rb
476
512
  - spec/numb/jacobsthal_lucas_spec.rb
477
513
  - spec/numb/aban_spec.rb
@@ -487,6 +523,7 @@ test_files:
487
523
  - spec/numb/centered_hexagonal_spec.rb
488
524
  - spec/numb/centered_n_gonal_spec.rb
489
525
  - spec/numb/highly_abundant_spec.rb
526
+ - spec/numb/e_perfect_spec.rb
490
527
  - spec/numb/augmented_amicable_spec.rb
491
528
  - spec/numb/rough_spec.rb
492
529
  - spec/numb/nonhypotenuse_spec.rb
@@ -500,10 +537,12 @@ test_files:
500
537
  - spec/numb/bell_spec.rb
501
538
  - spec/numb/sublime_spec.rb
502
539
  - spec/numb/refactorable_spec.rb
540
+ - spec/numb/subfactorial_spec.rb
503
541
  - spec/numb/betrothed_spec.rb
504
542
  - spec/numb/smith_spec.rb
505
543
  - spec/numb/unusual_spec.rb
506
544
  - spec/numb/octagonal_spec.rb
545
+ - spec/numb/entringer_spec.rb
507
546
  - spec/numb/unitary_sociable_spec.rb
508
547
  - spec/numb/full_reptend_prime_spec.rb
509
548
  - spec/numb/vampire_spec.rb
@@ -539,10 +578,12 @@ test_files:
539
578
  - spec/numb/centered_pentagonal_spec.rb
540
579
  - spec/numb/almost_perfect_spec.rb
541
580
  - spec/numb/amicable_spec.rb
581
+ - spec/numb/brilliant_spec.rb
542
582
  - spec/numb/amenable_spec.rb
543
583
  - spec/numb/happy_spec.rb
544
584
  - spec/numb/twin_prime_spec.rb
545
585
  - spec/numb/hexagonal_spec.rb
586
+ - spec/numb/genocchi_spec.rb
546
587
  - spec/numb/wieferich_prime_spec.rb
547
588
  - spec/numb/fibonacci_spec.rb
548
589
  - spec/numb/triangular_spec.rb
@@ -576,14 +617,18 @@ test_files:
576
617
  - spec/numb/brown_spec.rb
577
618
  - spec/numb/perrin_spec.rb
578
619
  - spec/numb/beastly_spec.rb
620
+ - spec/numb/franel_spec.rb
579
621
  - spec/numb/super_poulet_spec.rb
622
+ - spec/numb/sum_of_e_divisors_spec.rb
580
623
  - spec/numb/factorion_spec.rb
581
624
  - spec/numb/undulating_spec.rb
582
625
  - spec/numb/extravagant_spec.rb
583
626
  - spec/numb/lychrel_spec.rb
584
627
  - spec/numb/self_descriptive_spec.rb
585
628
  - spec/numb/decagonal_spec.rb
629
+ - spec/numb/e_divisors_spec.rb
586
630
  - spec/numb/apocalyptic_spec.rb
631
+ - spec/numb/bernoulli_spec.rb
587
632
  - spec/numb/kaprekar_spec.rb
588
633
  - spec/numb/isqrt_spec.rb
589
634
  - spec/numb/hilbert_spec.rb