25 lines
477 B
Plaintext
25 lines
477 B
Plaintext
function isperfect{T<:Integer}(n::T)
|
|
!isprime(n) || return false
|
|
tal = 1//n
|
|
hi = isqrt(n)
|
|
if hi^2 == n
|
|
tal += 1//hi
|
|
hi -= 1
|
|
end
|
|
for i in 2:hi
|
|
(d, r) = divrem(n, i)
|
|
if r == 0
|
|
tal += (1//i + 1//d)
|
|
end
|
|
end
|
|
return tal == 1//1
|
|
end
|
|
|
|
lo = 2
|
|
hi = 2^19
|
|
println("Searching for perfect numbers from ", lo, " to ", hi, ".")
|
|
for i in 2:2^19
|
|
isperfect(i) || continue
|
|
println(@sprintf("%8d", i))
|
|
end
|