Find squares n where n+1 is prime: Difference between revisions
Find squares n where n+1 is prime (view source)
Revision as of 11:39, 19 December 2021
, 2 years agoAdd Modula-2
Not a robot (talk | contribs) (Add BCPL) |
Not a robot (talk | contribs) (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}}==
|