16 lines
370 B
Ruby
16 lines
370 B
Ruby
require 'prime'
|
|
|
|
BLUM_EXP = [1, 1]
|
|
blums = (1..).step(2).lazy.select do |c|
|
|
next if c % 5 == 0
|
|
primes, exps = c.prime_division.transpose
|
|
exps == BLUM_EXP && primes.all?{|pr| (pr-3) % 4 == 0}
|
|
end
|
|
|
|
n, m = 50, 26828
|
|
res = blums.first(m)
|
|
puts "First #{n} Blum numbers:"
|
|
res.first(n).each_slice(10){|s| puts "%4d"*s.size % s}
|
|
|
|
puts "\n#{m}th Blum number: #{res.last}"
|