Skip to content

Instantly share code, notes, and snippets.

@rustedwolf
Created November 20, 2016 14:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rustedwolf/0501f01b17df4557a1601e80b2075409 to your computer and use it in GitHub Desktop.
Save rustedwolf/0501f01b17df4557a1601e80b2075409 to your computer and use it in GitHub Desktop.
Sums all number divisors
fn sum_divisors(number: u32) -> u32 {
let mut sum = 0;
let limit = if number % 2 == 0 { number / 2 } else { number / 3 }; // speeds up the process
for divisor in 1..limit + 1 {
if number % divisor == 0 {
sum += divisor;
}
}
sum + number
}
#[test]
fn test_present_counts() {
assert_eq!(sum_divisors(1), 10);
assert_eq!(sum_divisors(2), 30);
assert_eq!(sum_divisors(3), 40);
assert_eq!(sum_divisors(4), 70);
assert_eq!(sum_divisors(5), 60);
assert_eq!(sum_divisors(6), 120);
assert_eq!(sum_divisors(7), 80);
assert_eq!(sum_divisors(8), 150);
assert_eq!(sum_divisors(9), 130);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment