aboutsummaryrefslogtreecommitdiff
path: root/challenge-198/deadmarshal/oberon/Ch2.Mod
blob: 7dbd151935bbf956802690d6bc5a908b6d9419d4 (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
29
30
31
32
33
34
MODULE Ch2;

  IMPORT Out;

  PROCEDURE IsPrime(N:INTEGER):BOOLEAN;
    VAR I:INTEGER;
  BEGIN
    I := 5;
    IF (N = 2) OR (N = 3) THEN RETURN TRUE END;
    IF (N <= 1) OR (N MOD 2 = 0) OR (N MOD 3 = 0) THEN RETURN FALSE END;
    WHILE I * I <= N DO
      IF (N MOD I = 0) OR (N MOD (I+2) = 0) THEN RETURN FALSE END;
      INC(I,6);
    END;
    RETURN TRUE;
  END IsPrime;

  PROCEDURE PrimeCount(N:INTEGER):INTEGER;
    VAR I,Count:INTEGER;
  BEGIN
    Count := 0;
    FOR I := 1 TO N-1 DO
      IF IsPrime(I) THEN INC(Count) END;
    END;
    RETURN Count;
  END PrimeCount;
  
BEGIN
  Out.Int(PrimeCount(10),0); Out.Ln;
  Out.Int(PrimeCount(15),0); Out.Ln;
  Out.Int(PrimeCount(1),0); Out.Ln;
  Out.Int(PrimeCount(25),0); Out.Ln;
END Ch2.