class Sperm::Groups::ZpMul
Represents (Z/pZ \ {0}, *) - a multiplicative cyclic group of integers modulo p.
Attributes
generator[R]
modulo[R]
prime[R]
Public Class Methods
new(prime, generator)
click to toggle source
# File lib/sperm/groups/multiplicative.rb, line 13 def initialize(prime, generator) @prime = prime @generator = generator end
Public Instance Methods
order()
click to toggle source
# File lib/sperm/groups/multiplicative.rb, line 18 def order modulo - 1 end
produce_cycle(first, multiplier)
click to toggle source
# File lib/sperm/groups/multiplicative.rb, line 22 def produce_cycle(first, multiplier) fail ArgumentError, 'not an element' unless include?(first) && include?(multiplier) Enumerator.new do |yielder| current = first loop do yielder.yield current current = (current * multiplier) % modulo break if current == first end end end