summaryrefslogtreecommitdiff
path: root/gcd.rs
blob: 9e73a44a87a3a0338b2660ff951dc9fd2076b663 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use std::env;

fn gcd2(a: u64, b: u64) -> u64
{
  let mut a1 = a;
  let mut b1 = b;

  while b1 != 0 {
    let c1 = b1;
    b1 = a1 % b1;
    a1 = c1;
  }

  a1
}


fn main ()
{
  // XXX skip(1) to skip program name:
  let nums = env::args().skip(1).map(|s| s.parse().unwrap());

  let gcd = nums.fold(0, |g, n| gcd2(g, n));

  println!("{}", gcd);
}