-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
def gcd (a b : Nat) : Nat :=
if b > 0 then gcd b (a % b) else a
termination_by b
decreasing_by
exact Nat.mod_lt a ‹_›
def N := 1000
def A := Array.range N
def sum := (A.map fun x ↦ A.map (gcd x ·) |>.sum).sum
-- def T := 8
-- def sum := (Task.mapList List.sum <| A.toList.map fun x ↦ (Task.spawn fun _ ↦ A.map (gcd x ·) |>.sum)) |>.get
-- def sum :=
-- (Task.mapList List.sum <| List.range T |>.map fun t ↦
-- (Task.spawn fun _ ↦ (A[N/T*t:N/T*(t+1)].toArray.map fun x ↦ A.map (gcd x ·) |>.sum).sum)
-- ).get
def main := do
IO.println "test"
IO.println sum