# ================================================================ # Sieve of Eratosthenes: simple example of Miller DSL as programming language. # ================================================================ # Put this in a begin-block so we can do either # mlr -n put -q -f name-of-this-file.mlr # or # mlr -n put -q -f name-of-this-file.mlr -e '@n = 200' # i.e. 100 is the default upper limit, and another can be specified using -e. begin { @n = 100; } end { for (int i = 0; i <= @n; i += 1) { @s[i] = true; } @s[0] = false; # 0 is neither prime nor composite @s[1] = false; # 1 is neither prime nor composite # Strike out multiples for (int i = 2; i <= @n; i += 1) { for (int j = i+i; j <= @n; j += i) { @s[j] = false; } } # Print survivors for (int i = 0; i <= @n; i += 1) { if (@s[i]) { print i; } } }