Find squares n where n+1 is prime: Difference between revisions
Content deleted Content added
Not a robot (talk | contribs) Add BCPL |
Not a robot (talk | contribs) Add Modula-2 |
||
Line 216: | Line 216: | ||
</pre> |
</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}}== |
=={{header|PARI/GP}}== |