Find squares n where n+1 is prime: Difference between revisions

Add Modula-2
(Add BCPL)
(Add Modula-2)
Line 216:
</pre>
 
 
=={{header|Modula-2}}==
<lang modula2>MODULE SquareAlmostPrime;
FROM InOut IMPORT WriteCard, WriteLn;
FROM MathLib IMPORT sqrt;
 
CONST Max = 1000;
 
VAR prime: ARRAY [0..Max] OF BOOLEAN;
i, sq: CARDINAL;
PROCEDURE Sieve;
VAR i, j, sqmax: CARDINAL;
BEGIN
sqmax := TRUNC(sqrt(FLOAT(Max)));
FOR i := 2 TO Max DO prime[i] := TRUE; END;
FOR i := 2 TO sqmax DO
IF prime[i] THEN
j := i * i;
WHILE j <= Max DO
prime[j] := FALSE;
j := j + i;
END;
END;
END;
END Sieve;
 
PROCEDURE isSquare(n: CARDINAL): BOOLEAN;
VAR sq: CARDINAL;
BEGIN
sq := TRUNC(sqrt(FLOAT(n)));
RETURN sq * sq = n;
END isSquare;
 
BEGIN
Sieve;
FOR i := 2 TO Max DO
IF prime[i] THEN
sq := i-1;
IF isSquare(sq) THEN
WriteCard(sq, 4);
WriteLn;
END;
END;
END;
END SquareAlmostPrime.</lang>
{{out}}
<pre> 1
4
16
36
100
196
256
400
576
676</pre>
 
=={{header|PARI/GP}}==
2,094

edits