polyrhythm 0.1.1

Utilities for generating polyrhythms.
Documentation
pub fn lcm_vec(vec: &Vec<usize>) -> usize {
  let mut result: usize = 1;
  for ptr in vec {
    result = lcm(result, *ptr);
  }
  result
}

pub fn lcm(first: usize, second: usize) -> usize {
  first * second / gcd(first, second)
}

pub fn gcd(first: usize, second: usize) -> usize {
  let mut max = first;
  let mut min = second;
  if min > max {
    let val = max;
    max = min;
    min = val;
  }
  loop {
    let res = max % min;
    if res == 0 {
      return min;
    }
    max = min;
    min = res;
  }
}