GCD and LCD
来源:互联网 发布:sql qps 编辑:程序博客网 时间:2024/06/05 08:31
fn gcd_and_lcd(m:i32,n:i32)->(i32,i32){if m == 0 || n == 0{// () // It doesn't work!return (0,0);}let mut a = m;let mut b = n;if a < b{let t = a;b = a;a = t; }let mut c = -1;while b!=0 {c = a%b;a = b;b = c;}(a,m*n/a)}fn main(){let mut input = String::new();std::io::stdin().read_line(&mut input).expect("Faild to read line");let mut iter = input.split_whitespace();let m = match iter.next(){Some(ref ret) => {ret},None => {"0"},};let n = match iter.next(){Some(ref ret)=>{ret},None=>{"0"},};let m = m.parse::<i32>().unwrap();let n = n.parse::<i32>().unwrap();println!("input first num m={}",m);println!("input second num n={}",n);println!("m * n = {}",m*n);let (gcd,lcd) = gcd_and_lcd(m,n);println!("gcd = {}",gcd);println!("lcd = {}",lcd);}
D:\programming\Rust>gcd12 24input first num m=12input second num n=24m * n = 288gcd = 12lcd = 24D:\programming\Rust>gcd56 24input first num m=56input second num n=24m * n = 1344gcd = 8lcd = 168D:\programming\Rust>gcd4 8input first num m=4input second num n=8m * n = 32gcd = 4lcd = 8D:\programming\Rust>gcd8 4input first num m=8input second num n=4m * n = 32gcd = 4lcd = 8D:\programming\Rust>gcd100 88input first num m=100input second num n=88m * n = 8800gcd = 4lcd = 2200D:\programming\Rust>gcd60 40input first num m=60input second num n=40m * n = 2400gcd = 20lcd = 120D:\programming\Rust>gcd0 0input first num m=0input second num n=0m * n = 0thread 'main' panicked at 'attempt to divide by zero', gcd.rs:18:5note: Run with `RUST_BACKTRACE=1` for a backtrace.
D:\programming\Rust>gcd0 0input first num m=0input second num n=0m * n = 0gcd = 0lcd = 0
阅读全文