// 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
import Foundation
func isPerfect(_ n: Int) -> Bool {
if n < 2 { return false }
var sum = 1
let limit = Int(Double(n).squareRoot())
if limit >= 2 {
for i in 2...limit {
if n % i == 0 {
sum += i
let pair = n / i
if pair != i { sum += pair }
}
}
}
return sum == n
}
func main() {
print("Perfect numbers up to 10,000:")
for i in 1...10000 {
if isPerfect(i) {
print(i)
}
}
}
main()
/*
run:
Perfect numbers up to 10,000:
6
28
496
8128
*/