// If the sum of all factors of a number is equal to the number, then the number is perfect
// Factors of a number are numbers that divide the number evenly
// 6
// factors = 1, 2, 3
// 1 + 2 + 3 = 6
fn is_perfect(n: u64) -> bool {
if n < 2 {
return false;
}
let mut sum = 1; // 1 is always a divisor
let limit = (n as f64).sqrt() as u64;
for i in 2..=limit {
if n % i == 0 {
sum += i;
let pair = n / i;
if pair != i {
sum += pair;
}
}
}
sum == n
}
fn main() {
for num in 1..10000 {
if is_perfect(num) {
println!("{} is a perfect number", num);
}
}
}
/*
run:
6 is a perfect number
28 is a perfect number
496 is a perfect number
8128 is a perfect number
*/