v / examples / euler.v
18 lines · 16 sloc · 482 bytes · 8bb7f3dd757f76fad5936fa3348e76215a738358
Raw
1// This example shows 2 solutions for https://projecteuler.net/problem=1 :
2fn gauss_sum(n int) fn (int) int {
3 return fn [n] (m int) int {
4 return m * ((n - 1) / m) * ((n - 1) / m + 1) / 2
5 }
6}
7
8gs := gauss_sum(1000)
9println('O(1) arithmetic progression sum: ${gs(3) + gs(5) - gs(15)}')
10
11// A brute force solution, by checking every n in the range:
12mut sum := 0
13for n in 1 .. 1000 {
14 if n % 3 == 0 || n % 5 == 0 {
15 sum += n
16 }
17}
18println('O(n) brute force calculated sum: ${sum}')
19