30 lines
482 B
Ruby
30 lines
482 B
Ruby
|
require 'prime'
|
||
|
|
||
|
def primes_up_to(n)
|
||
|
Prime.take_while { |x| x < n }
|
||
|
end
|
||
|
|
||
|
def integer_rotations(n)
|
||
|
rotations = []
|
||
|
digits = n.to_s.split('')
|
||
|
|
||
|
digits.count.times do
|
||
|
rotations << digits.join('').to_i
|
||
|
digits.rotate!
|
||
|
end
|
||
|
|
||
|
rotations
|
||
|
end
|
||
|
|
||
|
def is_circular?(n)
|
||
|
circular = true
|
||
|
integer_rotations(n).each do |perm|
|
||
|
return false unless Prime.prime?(perm)
|
||
|
end
|
||
|
circular
|
||
|
end
|
||
|
|
||
|
def circular_primes_up_to(n)
|
||
|
primes_up_to(n).select { |x| puts x; is_circular?(x) }
|
||
|
end
|