diff options
Diffstat (limited to 'prime-factors/src/lib.rs')
| -rw-r--r-- | prime-factors/src/lib.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/prime-factors/src/lib.rs b/prime-factors/src/lib.rs new file mode 100644 index 0000000..3d7b41f --- /dev/null +++ b/prime-factors/src/lib.rs | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | |||
| 2 | fn factors_aux(mut vec: Vec<u64>, n: u64) -> Vec<u64> { | ||
| 3 | match n { | ||
| 4 | 1 => vec, | ||
| 5 | n if n % 2 == 0 => { | ||
| 6 | factors_aux({ vec.push(2); vec }, n / 2) | ||
| 7 | }, | ||
| 8 | _ => { | ||
| 9 | let mut i: u64 = 3; | ||
| 10 | while n % i != 0 { i += 2 } | ||
| 11 | factors_aux({ vec.push(i); vec }, n / i) | ||
| 12 | } | ||
| 13 | } | ||
| 14 | } | ||
| 15 | |||
| 16 | pub fn factors(n: u64) -> Vec<u64> { | ||
| 17 | factors_aux(vec![],n) | ||
| 18 | } | ||
