class Sperm::Groups::ZnAdd
Represents (Z/nZ, +) - an additive cyclic group of integers modulo n.
Attributes
modulo[R]
order[R]
Public Class Methods
new(modulo_factors)
click to toggle source
# File lib/sperm/groups/additive.rb, line 12 def initialize(modulo_factors) @modulo_factors = modulo_factors.uniq @modulo = modulo_factors.inject(1, &:*) end
Public Instance Methods
generator?(number)
click to toggle source
# File lib/sperm/groups/additive.rb, line 17 def generator?(number) fail ArgumentError, 'not an element' unless include?(number) @modulo_factors.all? { |prime| coprime_with_prime?(number, prime) } end
Private Instance Methods
coprime_with_prime?(number, prime)
click to toggle source
# File lib/sperm/groups/additive.rb, line 24 def coprime_with_prime?(number, prime) number % prime != 0 end