numb 0.152.0 → 0.170.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. data/VERSION +1 -1
  2. data/lib/numb/bell.rb +9 -12
  3. data/lib/numb/bernoulli.rb +7 -8
  4. data/lib/numb/catalan.rb +1 -5
  5. data/lib/numb/divisors/abundant.rb +58 -0
  6. data/lib/numb/divisors/aliquot.rb +31 -0
  7. data/lib/numb/divisors/amicable.rb +38 -0
  8. data/lib/numb/divisors/perfect.rb +73 -0
  9. data/lib/numb/divisors.rb +389 -0
  10. data/lib/numb/entringer.rb +2 -0
  11. data/lib/numb/figurate.rb +138 -0
  12. data/lib/numb/in_sequence.rb +11 -0
  13. data/lib/numb/jacobsthal_lucas.rb +5 -6
  14. data/lib/numb/knuth.rb +1 -4
  15. data/lib/numb/lucas.rb +5 -5
  16. data/lib/numb/lucas2.rb +11 -0
  17. data/lib/numb/lychrel.rb +0 -4
  18. data/lib/numb/palindrome.rb +8 -0
  19. data/lib/numb/pell_lucas.rb +9 -0
  20. data/lib/numb/primes.rb +164 -0
  21. data/lib/numb/pronic.rb +1 -0
  22. data/lib/numb/q.rb +13 -0
  23. data/lib/numb/schr/303/266der.rb +20 -0
  24. data/lib/numb/segmented.rb +29 -0
  25. data/lib/numb/stirling.rb +9 -0
  26. data/lib/numb/stirling2.rb +9 -0
  27. data/lib/numb/strictly_non_palindromic.rb +1 -5
  28. data/lib/numb/super_catalan.rb +17 -0
  29. data/lib/numb/super_d.rb +6 -0
  30. data/lib/numb/takeuchi.rb +18 -0
  31. data/lib/numb/unhappy.rb +2 -0
  32. data/lib/numb.rb +1 -53
  33. data/spec/numb/first_with_n_divisors_spec.rb +15 -0
  34. data/spec/numb/highly_composite_spec.rb +1 -1
  35. data/spec/numb/jacobsthal_lucas_spec.rb +19 -11
  36. data/spec/numb/lucas2_spec.rb +30 -0
  37. data/spec/numb/lucas_spec.rb +17 -9
  38. data/spec/numb/minimal_spec.rb +1 -1
  39. data/spec/numb/near_square_spec.rb +54 -0
  40. data/spec/numb/octahedral_spec.rb +29 -0
  41. data/spec/numb/palindrome_spec.rb +43 -0
  42. data/spec/numb/pell_lucas_spec.rb +28 -0
  43. data/spec/numb/pentatope_spec.rb +15 -0
  44. data/spec/numb/primitive_abundant_spec.rb +21 -0
  45. data/spec/numb/pyramidal_spec.rb +42 -0
  46. data/spec/numb/q_spec.rb +31 -0
  47. data/spec/numb/schr/303/266der_spec.rb +28 -0
  48. data/spec/numb/segmented_spec.rb +29 -0
  49. data/spec/numb/square_part_spec.rb +15 -0
  50. data/spec/numb/star_spec.rb +29 -0
  51. data/spec/numb/stella_octangula_spec.rb +29 -0
  52. data/spec/numb/stirling2_spec.rb +23 -0
  53. data/spec/numb/stirling_spec.rb +23 -0
  54. data/spec/numb/super_catalan_spec.rb +29 -0
  55. data/spec/numb/super_d_spec.rb +68 -0
  56. data/spec/numb/takeuchi_spec.rb +28 -0
  57. data/spec/numb/tetrahedral_spec.rb +15 -0
  58. metadata +63 -100
  59. data/lib/numb/abundancy.rb +0 -8
  60. data/lib/numb/abundant.rb +0 -20
  61. data/lib/numb/achilles.rb +0 -15
  62. data/lib/numb/aliquot_sequence.rb +0 -13
  63. data/lib/numb/almost_perfect.rb +0 -8
  64. data/lib/numb/almost_prime.rb +0 -6
  65. data/lib/numb/amicable.rb +0 -6
  66. data/lib/numb/aspiring.rb +0 -8
  67. data/lib/numb/augmented_amicable.rb +0 -7
  68. data/lib/numb/balanced_prime.rb +0 -10
  69. data/lib/numb/betrothed.rb +0 -8
  70. data/lib/numb/breeder.rb +0 -9
  71. data/lib/numb/brilliant.rb +0 -7
  72. data/lib/numb/centered_cube.rb +0 -7
  73. data/lib/numb/centered_hexagonal.rb +0 -6
  74. data/lib/numb/centered_n_gonal.rb +0 -9
  75. data/lib/numb/centered_pentagonal.rb +0 -6
  76. data/lib/numb/centered_square.rb +0 -5
  77. data/lib/numb/centered_triangular.rb +0 -5
  78. data/lib/numb/composite.rb +0 -5
  79. data/lib/numb/coprime.rb +0 -9
  80. data/lib/numb/cube.rb +0 -5
  81. data/lib/numb/d.rb +0 -6
  82. data/lib/numb/decagonal.rb +0 -5
  83. data/lib/numb/deficient.rb +0 -19
  84. data/lib/numb/dihedral_prime.rb +0 -26
  85. data/lib/numb/dodecagonal.rb +0 -5
  86. data/lib/numb/e_divisors.rb +0 -10
  87. data/lib/numb/e_perfect.rb +0 -7
  88. data/lib/numb/economical.rb +0 -16
  89. data/lib/numb/emrip.rb +0 -15
  90. data/lib/numb/equidigital.rb +0 -18
  91. data/lib/numb/extravagant.rb +0 -18
  92. data/lib/numb/fermat_pseudoprime.rb +0 -9
  93. data/lib/numb/friendly.rb +0 -9
  94. data/lib/numb/full_reptend_prime.rb +0 -5
  95. data/lib/numb/giuga.rb +0 -7
  96. data/lib/numb/harshad.rb +0 -9
  97. data/lib/numb/heptagonal.rb +0 -5
  98. data/lib/numb/hexagonal.rb +0 -6
  99. data/lib/numb/highly_abundant.rb +0 -7
  100. data/lib/numb/highly_composite.rb +0 -12
  101. data/lib/numb/hoax.rb +0 -7
  102. data/lib/numb/hyperperfect.rb +0 -7
  103. data/lib/numb/impolite.rb +0 -6
  104. data/lib/numb/infinitary_divisors.rb +0 -15
  105. data/lib/numb/infinitary_perfect.rb +0 -6
  106. data/lib/numb/interprime.rb +0 -6
  107. data/lib/numb/k_perfect.rb +0 -8
  108. data/lib/numb/mersenne_prime.rb +0 -5
  109. data/lib/numb/minimal.rb +0 -8
  110. data/lib/numb/multiamicable.rb +0 -7
  111. data/lib/numb/myriagonal.rb +0 -5
  112. data/lib/numb/n_gonal.rb +0 -7
  113. data/lib/numb/next_prev_prime.rb +0 -13
  114. data/lib/numb/nth_prime.rb +0 -17
  115. data/lib/numb/number_of_divisors.rb +0 -22
  116. data/lib/numb/octagonal.rb +0 -5
  117. data/lib/numb/ore.rb +0 -8
  118. data/lib/numb/pentagonal.rb +0 -5
  119. data/lib/numb/perfect.rb +0 -8
  120. data/lib/numb/perfect_power.rb +0 -9
  121. data/lib/numb/polite.rb +0 -7
  122. data/lib/numb/powerful.rb +0 -10
  123. data/lib/numb/practical.rb +0 -26
  124. data/lib/numb/prime_count.rb +0 -16
  125. data/lib/numb/prime_signature.rb +0 -5
  126. data/lib/numb/primitive_pseudoperfect.rb +0 -5
  127. data/lib/numb/rhonda.rb +0 -6
  128. data/lib/numb/rough.rb +0 -5
  129. data/lib/numb/safe_prime.rb +0 -5
  130. data/lib/numb/semiperfect.rb +0 -20
  131. data/lib/numb/semiprime.rb +0 -6
  132. data/lib/numb/smith.rb +0 -7
  133. data/lib/numb/smooth.rb +0 -5
  134. data/lib/numb/sociable.rb +0 -6
  135. data/lib/numb/sophie_germain_prime.rb +0 -5
  136. data/lib/numb/square.rb +0 -7
  137. data/lib/numb/square_free.rb +0 -6
  138. data/lib/numb/square_triangular.rb +0 -5
  139. data/lib/numb/squared_triangular.rb +0 -5
  140. data/lib/numb/sublime.rb +0 -6
  141. data/lib/numb/sum_of_e_divisors.rb +0 -10
  142. data/lib/numb/sum_of_infinitary_divisors.rb +0 -9
  143. data/lib/numb/sum_of_unitary_divisors.rb +0 -5
  144. data/lib/numb/super_poulet.rb +0 -5
  145. data/lib/numb/superabundant.rb +0 -18
  146. data/lib/numb/superperfect.rb +0 -6
  147. data/lib/numb/triangular.rb +0 -6
  148. data/lib/numb/twin_prime.rb +0 -5
  149. data/lib/numb/unitary_amicable.rb +0 -7
  150. data/lib/numb/unitary_divisor.rb +0 -5
  151. data/lib/numb/unitary_perfect.rb +0 -7
  152. data/lib/numb/unitary_sociable.rb +0 -7
  153. data/lib/numb/untouchable.rb +0 -14
  154. data/lib/numb/unusual.rb +0 -5
  155. data/lib/numb/weird.rb +0 -8
  156. data/lib/numb/wieferich.rb +0 -6
data/lib/numb/square.rb DELETED
@@ -1,7 +0,0 @@
1
- # coding: utf-8
2
- class Integer
3
- def square?
4
- return false unless zero? or (positive? and to_s(16)[-1] =~ /[0149]/)
5
- (sq = sqrt).finite? ? sq.integer? : nil
6
- end
7
- end
@@ -1,6 +0,0 @@
1
- # coding: utf-8
2
- class Integer
3
- def square_free?
4
- not μ.zero?
5
- end
6
- end
@@ -1,5 +0,0 @@
1
- class Integer
2
- def square_triangular?
3
- square? and triangular?
4
- end
5
- end
@@ -1,5 +0,0 @@
1
- class Integer
2
- def squared_triangular?
3
- square? and sqrt.to_i.triangular?
4
- end
5
- end
data/lib/numb/sublime.rb DELETED
@@ -1,6 +0,0 @@
1
- # coding: utf-8
2
- class Integer
3
- def sublime?
4
- number_of_divisors.perfect? and σ.perfect?
5
- end
6
- end
@@ -1,10 +0,0 @@
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
@@ -1,9 +0,0 @@
1
- # coding: utf-8
2
- class Integer
3
- def σ∞
4
- infinitary_divisors.reduce :+
5
- end
6
-
7
- alias :sum_of_infinitary_divisors :σ∞
8
- alias :isigma :σ∞
9
- end
@@ -1,5 +0,0 @@
1
- class Integer
2
- def sum_of_unitary_divisors
3
- divisors.select{|d| unitary_divisor?(d)}.reduce(:+) or 0
4
- end
5
- end
@@ -1,5 +0,0 @@
1
- class Integer
2
- def super_poulet?
3
- poulet? and divisors.all?{|d| ((2**d) - 2).divides?(d)}
4
- end
5
- end
@@ -1,18 +0,0 @@
1
- # coding: utf-8
2
- class Integer
3
- def superabundant?
4
- return true if self == 1
5
- # Constraints due to "Abundant Numbers and the Riemann Hypothesis",
6
- # Briggs, 2006, Experimental Mathematics, vol. 15, no. 2
7
- ex = primaries.map(&:last)
8
- return false unless [ex.last, ex.first] == ex.minmax
9
- primaries[1..-1].all? do |b, e|
10
- (e - (ex[0] * Math.log(b, primaries[0][0])).floor <= 1) and e < 2**(ex[0] + 2)
11
- end or return false
12
- return false unless [4, 36].include?(self) or ex.last == 1
13
- 1.upto(self - 1).all? do |m|
14
- m.abundancy < abundancy
15
- end
16
- end
17
- memoize :superabundant?
18
- end
@@ -1,6 +0,0 @@
1
- # coding: utf-8
2
- class Integer
3
- def superperfect?
4
- σ.σ == 2 * self
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- # coding: utf-8
2
- class Integer
3
- def triangular?
4
- n_gonal?(3)
5
- end
6
- end
@@ -1,5 +0,0 @@
1
- class Integer
2
- def twin_prime?(p)
3
- [p, self].all?(&:prime?) and p == self + 2
4
- end
5
- end
@@ -1,7 +0,0 @@
1
- class Integer
2
- def unitary_amicable?(n)
3
- [n + self, sum_of_unitary_divisors].all? do |other|
4
- other == n.sum_of_unitary_divisors
5
- end
6
- end
7
- end
@@ -1,5 +0,0 @@
1
- class Integer
2
- def unitary_divisor?(x)
3
- x.coprime?(self/x)
4
- end
5
- end
@@ -1,7 +0,0 @@
1
- class Integer
2
- def unitary_perfect?
3
- proper_divisors.select do |divisor|
4
- unitary_divisor?(divisor)
5
- end.reduce(:+) == self
6
- end
7
- end
@@ -1,7 +0,0 @@
1
- class Integer
2
- def unitary_sociable?(t)
3
- return false unless t >= 3
4
- seq = aliquot_sequence(t.succ, ->(n){ n.sum_of_unitary_divisors - n})
5
- seq.size - 1 == t and seq.last == self
6
- end
7
- end
@@ -1,14 +0,0 @@
1
- # coding: utf-8
2
- class Integer
3
- def untouchable?
4
- # * The first untouchable integer is 2
5
- # * Perfect numbers are never untouchable because they can be expressed
6
- # as the sum of their own proper divisors
7
- # * If p is prime, the sum of the proper divisors of p**2 is p + 1;
8
- # therefore, no untouchable number is one more than a prime.
9
- return false if self < 2 or perfect? or (self - 1).prime?
10
- (1..((self - 1)**2)).none? do |m|
11
- m.σ - m == self
12
- end
13
- end
14
- end
data/lib/numb/unusual.rb DELETED
@@ -1,5 +0,0 @@
1
- class Integer
2
- def unusual?
3
- prime_factors.max > sqrt
4
- end
5
- end
data/lib/numb/weird.rb DELETED
@@ -1,8 +0,0 @@
1
- # coding: utf-8
2
- class Integer
3
- def weird?
4
- return false unless positive?
5
- return false if odd? && self < (10 ** 17)
6
- not semiperfect? and abundant?
7
- end
8
- end
@@ -1,6 +0,0 @@
1
- class Integer
2
- def wieferich_prime?
3
- return false unless prime?
4
- (2**(self - 1)).modulo(self ** 2) == 1
5
- end
6
- end