RosettaCodeData/Task/Long-primes/Ruby/long-primes-1.rb
2023-07-01 13:44:08 -04:00

32 lines
762 B
Ruby

require 'prime'
batas = 64_000 # limit number
start = Time.now # time of starting
lp_array = [] # array of long-prime numbers
def find_period(n)
r, period = 1, 0
(1...n).each {r = (10 * r) % n}
rr = r
loop do
r = (10 * r) % n
period += 1
break if r == rr
end
return period
end
Prime.each(batas).each do |prime|
lp_array.push(prime) if find_period(prime) == prime-1 && prime != 2
end
[500, 1000, 2000, 4000, 8000, 16000, 32000, 64000].each do |s|
if s == 500
puts "\nAll long primes up to #{s} are: #{lp_array.count {|x| x < s}}. They are:"
lp_array.each {|x| print x, " " if x < s}
else
print "\nAll long primes up to #{s} are: #{lp_array.count {|x| x < s}}"
end
end
puts "\n\nTime: #{Time.now - start}"