summaryrefslogtreecommitdiff
path: root/test.toc
blob: 8372265bd7428ff45d0beca7fa5e122eaba98367 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "std/io.toc", io;

prime_sieve ::= fn(N::=10000) sieve: [N]bool {
	for x, i := &sieve {
		*x = i%2 != 0;
	}
	sieve[1] = false;
	sieve[2] = true;
	i := 3;
	while i*i <= N {
		defer i += 2;
		if !sieve[i] { continue; }
		j := 2*i;
		while j < N {
			sieve[j] = false;
			j += i;
		}
	}
}

main ::= fn() {
	sieve := prime_sieve();
	for x, i := sieve {
		if x {
			io.puti(i);
		}
	}
}