haar_lib/math/continued_fraction.rs
1//! 連分数展開
2
3/// $\frac{a}{b}$を連分数展開する。
4///
5/// `b`が`0`のとき、`None`を返す。
6pub fn continued_fraction(mut a: u64, mut b: u64) -> Option<Vec<u64>> {
7 if b == 0 {
8 return None;
9 }
10
11 let mut ret = vec![];
12 loop {
13 ret.push(a / b);
14 a %= b;
15 if a == 0 {
16 break;
17 }
18 std::mem::swap(&mut a, &mut b);
19 }
20 Some(ret)
21}