June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
|
|
@ -1,16 +1,23 @@
|
|||
use std::cmp::{min, max};
|
||||
fn gcd_stein(a: usize, b: usize) -> usize {
|
||||
use std::cmp::{max, min};
|
||||
|
||||
fn gcd(a: usize, b: usize) -> usize {
|
||||
match ((a, b), (a & 1, b & 1)) {
|
||||
((x, y), _) if x == y => y,
|
||||
((0, x), _) | ((x, 0), _) => x,
|
||||
((x, y), _) if x == y => y,
|
||||
((0, x), _) | ((x, 0), _) => x,
|
||||
((x, y), (0, 1)) | ((y, x), (1, 0)) => gcd(x >> 1, y),
|
||||
((x, y), (0, 0)) => gcd(x >> 1, y >> 1) << 1,
|
||||
((x, y), (1, 1)) => { let (x, y) = (min(x, y), max(x, y));
|
||||
gcd((y - x) >> 1, x)
|
||||
}
|
||||
_ => unreachable!(),
|
||||
((x, y), (0, 0)) => gcd(x >> 1, y >> 1) << 1,
|
||||
((x, y), (1, 1)) => {
|
||||
let (x, y) = (min(x, y), max(x, y));
|
||||
gcd((y - x) >> 1, x)
|
||||
}
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
fn lcm(a: usize, b: usize) -> usize {
|
||||
a * b / gcd_stein(a,b)
|
||||
a * b / gcd(a, b)
|
||||
}
|
||||
|
||||
fn main() {
|
||||
println!("{}", lcm(6324, 234))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue