RosettaCodeData/Task/Factorial-primes/Ruby/factorial-primes.rb
2023-07-01 13:44:08 -04:00

19 lines
435 B
Ruby

require 'openssl'
factorial_primes = Enumerator.new do |y|
fact = 1
(1..).each do |i|
fact *= i
y << [i, "- 1", fact - 1] if OpenSSL::BN.new(fact - 1).prime?
y << [i, "+ 1", fact + 1] if OpenSSL::BN.new(fact + 1).prime?
end
end
factorial_primes.first(30).each do |a|
s = a.last.to_s
if s.size > 40 then
puts "%d! %s = " % a.first(2) + "#{s[0,20]}...#{s[-20,20]}"
else
puts "%d! %s = %d" % a
end
end