|
|
@ -1,3 +1,6 @@
|
|
|
|
|
|
|
|
#![warn(rust_2018_idioms)]
|
|
|
|
|
|
|
|
#![allow(elided_lifetimes_in_paths)]
|
|
|
|
|
|
|
|
|
|
|
|
fn gcd(mut n: u64, mut m: u64) -> u64 {
|
|
|
|
fn gcd(mut n: u64, mut m: u64) -> u64 {
|
|
|
|
assert!(n != 0 && m != 0);
|
|
|
|
assert!(n != 0 && m != 0);
|
|
|
|
while m != 0 {
|
|
|
|
while m != 0 {
|
|
|
@ -20,19 +23,19 @@ fn test_gcd() {
|
|
|
|
3 * 11);
|
|
|
|
3 * 11);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
use std::io::Write;
|
|
|
|
|
|
|
|
use std::str::FromStr;
|
|
|
|
use std::str::FromStr;
|
|
|
|
|
|
|
|
use std::env;
|
|
|
|
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
fn main() {
|
|
|
|
let mut numbers = Vec::new();
|
|
|
|
let mut numbers = Vec::new();
|
|
|
|
|
|
|
|
|
|
|
|
for arg in std::env::args().skip(1) {
|
|
|
|
for arg in env::args().skip(1) {
|
|
|
|
numbers.push(u64::from_str(&arg)
|
|
|
|
numbers.push(u64::from_str(&arg)
|
|
|
|
.expect("error parsing argument"));
|
|
|
|
.expect("error parsing argument"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if numbers.len() == 0 {
|
|
|
|
if numbers.len() == 0 {
|
|
|
|
writeln!(std::io::stderr(), "Usage: gcd NUMBER ...").unwrap();
|
|
|
|
eprintln!("Usage: gcd NUMBER ...");
|
|
|
|
std::process::exit(1);
|
|
|
|
std::process::exit(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|