rewrite smarter people's euler solutions
This commit is contained in:
21
examples/puzzles/euler_21.zr
Normal file
21
examples/puzzles/euler_21.zr
Normal file
@@ -0,0 +1,21 @@
|
||||
func divisors_sum[n: i64] : i64
|
||||
let k: i64 = n
|
||||
let sum: i64 = 1
|
||||
|
||||
for i in 2..k+1
|
||||
let p: i64 = 1
|
||||
while k % i == 0
|
||||
p = p * i
|
||||
k = k / i
|
||||
sum = sum * (p * i - 1) / (i - 1)
|
||||
return sum - n
|
||||
|
||||
func main[] : i64
|
||||
let sum: i64 = 0
|
||||
|
||||
for i in 2..10000
|
||||
let d: i64 = divisors_sum(i)
|
||||
if i < d & i == divisors_sum(d)
|
||||
sum = sum + i + d
|
||||
|
||||
io.println_i64(sum)
|
||||
Reference in New Issue
Block a user