$primes = []
def read_primes_from_file file_loc
primes_unparsed = File.new(file_loc, "r")
primes_up_str = primes_unparsed.gets
primes_as_strs = primes_up_str[1...-2].split(" ")
$primes = primes_as_strs.collect { |prime| prime.to_i }
primes_as_strs = nil
primes_up_str = nil
primes_unparsed.close
primes_unparsed = nil
end
def is_prime n
return false if (0..1).include? n
$primes.each { |prime| return false if n%prime == 0}
true
end
def prime_check n
('1' * n) !~ /^1?$|^(11+?)\1+$/
end
def find_from_to first, last
(first..last).each { |num| $primes << num if is_prime num }
end
def is_circular_prime n
num_str = n.to_s
str_len = num_str.length
(0...str_len).each {|i|
return false unless prime_check(num_str.to_i)
num_str = num_str[1..-1] + num_str[0...1]
}
true
end
p "Reading Primes From File"
read_primes_from_file "primes.db"
p "Read successfully. Last Prime: #{ $primes[0] }"
p "Checking for Circular Primes"
count_of_circ_primes = $primes.inject(0) { |count, prime|
if is_circular_prime(prime)
count += 1
print "."
else
count
end
}
p count_of_circ_primes