lib/numb/factorial.rb in numb-0.170.0 vs lib/numb/factorial.rb in numb-0.181.0
- old
+ new
@@ -12,6 +12,18 @@
else
return d.factorial == self
end
end
end
+
+ def factorial_of?
+ return false unless factorial?
+ return 1 if self == 1
+ pfacts = primaries
+ divisors.sort.take_while.with_index{|d,i| d == i.succ}.reverse_each do |d|
+ pfacts.all? do |b, e|
+ (1..Math.log(d,b)).map{|k| Rational(d, b**k).floor}.reduce(:+) == e
+ end and return d
+ end
+ nil
+ end
end