v / examples / primes.v
24 lines · 23 sloc · 369 bytes · bb13e6601ef09a89a44834840ec9fa5bfdafe240
Raw
1import math { log }
2
3n := arguments()[1] or { '10' }.int()
4sz := if n < 15 {
5 50
6} else {
7 ln := log(f64(n))
8 int(f64(n) * (ln + log(ln))) + 1
9}
10mut sieve := []bool{len: sz}
11for i := 2; i * i < sz; i++ {
12 if !sieve[i] {
13 for j := i * i; j < sz; j += i {
14 sieve[j] = true
15 }
16 }
17}
18mut c := 0
19for i := 2; c < n && i < sz; i++ {
20 if !sieve[i] {
21 println(i)
22 c++
23 }
24}
25