numb 0.125.0 → 0.138.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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