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