summaryrefslogtreecommitdiff
path: root/ipl/packs/loadfuncpp/examples/primes.icn
blob: ecbd1f17c35143e3c3a96073195bde5208f7fb34 (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
procedure main() 
    #limit to the first x primes
    local x;
    x := 20;
    every write(!(p := 1, a := [2])| 1(|(p +:= 2), not(p % !a = 0), put(a, p))) \x
    list_primes(x);
end

procedure list_primes(prime_limit)
    local p;
    local a;
    local s;
    initial {
	p := 1;
	a := [2];
    }
    until (prime_limit <= *a) do {
	p +:= 2;
	s := sqrt(p);
	
	if (not(p % !a = 0)) then {
	    put(a, p);
	}
    }
    every write(!a)
end