aboutsummaryrefslogtreecommitdiff
path: root/prime-factors/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'prime-factors/src/lib.rs')
-rw-r--r--prime-factors/src/lib.rs18
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
2fn 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
16pub fn factors(n: u64) -> Vec<u64> {
17 factors_aux(vec![],n)
18}