entry :: () printf("\n") euler1() euler3() // @todo: Add more stats in the preview euler1 :: () end := 1000 result := 0 // @todo: for 0..1000(implicit i) and for i in 0..1000 for i := 0, i < end, i++ if i % 3 == 0 result += i else if i % 5 == 0 result += i printf("Euler1: %lld\n", result) int_sqrt :: (s: S64): S64 result := sqrt(cast(s: F64)) return cast(result: S64) // https://en.wikipedia.org/wiki/Integer_square_root int_sqrt1 :: (s: S64): S64 x0 := s / 2 if x0 != 0 x1 := ( x0 + s / x0 ) / 2 for x1 < x0 x0 = x1 x1 = ( x0 + s / x0 ) / 2 return x0 else return s euler3 :: () n := 13195 results: [32]S64 results_len := 0 // First search all 2's for n % 2 == 0 results[results_len++] = 2 n /= 2 print_int(int_sqrt(n)) // Then search other primes, 3, 5, 7 etc. for i := 3, i <= int_sqrt(n), i += 2 for n % i == 0 results[results_len++] = i n /= i printf("Euler3: ") is_correct: S64 = 1 for i := 0, i < results_len, i++ is_correct = is_correct * results[i] printf("%lld ", results[i]) printf(":: %lld", is_correct) print_int :: (i: S64) printf("%lld ", i) #foreign sqrt :: (v: F64): F64 #foreign printf :: (str: String, ...)