diff options
| author | Federico I <git@federicoigne.com> | 2020-03-29 21:14:07 +0100 |
|---|---|---|
| committer | Federico Igne <git@federicoigne.com> | 2021-11-03 18:54:52 +0000 |
| commit | 474e6367a2350ed3d75e51e84fd7d9639bb6560a (patch) | |
| tree | 56e8babe9df901ee670d818275d1a878481716f5 /prime-factors/src | |
| parent | 204318ac52453b7d365cf0cd60c3fbeaacf4edaa (diff) | |
| download | exercism-474e6367a2350ed3d75e51e84fd7d9639bb6560a.tar.gz exercism-474e6367a2350ed3d75e51e84fd7d9639bb6560a.zip | |
[rust] Prime Factors
Diffstat (limited to 'prime-factors/src')
| -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 | } | ||
