Gaussian primes: Difference between revisions

Added Algol 68
(Added Quackery.)
(Added Algol 68)
Line 33:
 
 
 
=={{header|ALGOL 68}}==
<syntaxhighlight lang="algol68">
BEGIN # find and plot Gaussian primes: complex numbers with integer real and #
# imaginary parts where: #
# either the real and imaginary parts are non 0 and the norm #
# (sum of squares of the real and imaginary parts) is prime #
# or one of the real/imaginary parts is zero and the other is #
# +/- a prime pf the form 4n + 3 #
 
PR read "primes.incl.a68" PR # include prime utilities #
[]BOOL primes = PRIMESIEVE 10 000; # sieve the primes to 10 000 #
 
# applies gp to the Gaussian primes with within radius of 0+0i #
PROC process gaussian primes = ( INT radius, PROC(INT,INT)VOID gp )VOID:
BEGIN
INT r2 = radius * radius;
FOR rp FROM - radius TO radius DO
FOR ip FROM - radius TO radius DO
IF INT norm = ( rp * rp ) + ( ip * ip );
norm < r2
THEN
IF rp /= 0 AND ip /= 0 THEN
IF primes[ norm ] THEN gp( rp, ip ) FI
ELIF rp /= 0 OR ip /= 0 THEN
IF INT abs sum parts = ABS ( rp + ip );
primes[ abs sum parts ]
AND ( abs sum parts - 3 ) MOD 4 = 0
THEN
gp( rp, ip )
FI
FI
FI
OD
OD
END # process gaussian primes # ;
 
# show Gaussian primes within a radius (root of the norm) of 10 of 0+0i #
INT gp count := 0;
process gaussian primes( 10
, ( INT rp, ip )VOID:
BEGIN
print( ( " "
, IF rp > 0 THEN " " ELSE "-" FI, whole( ABS rp, 0 )
, IF ip < 0 THEN "-" ELSE "+" FI, whole( ABS ip, 0 )
, "i"
)
),
IF ( gp count +:= 1 ) MOD 12 = 0 THEN print( ( newline ) ) FI
END
);
# plot the Gaussian primes within a radius of 50 of the origin (0+0i) #
[ -50 : 50, -50 : 50 ]CHAR plot;
FOR i FROM 1 LWB plot TO 1 UPB plot DO
FOR j FROM 2 LWB plot TO 2 UPB plot DO
plot[ i, j ] := IF i = 0 THEN "-" ELSE " " FI
OD;
plot[ i, 0 ] := "|"
OD;
plot[ 0, 0 ] := "+";
process gaussian primes( 50, ( INT rp, ip )VOID: plot[ rp, ip ] := "*" );
print( ( newline, newline ) );
FOR i FROM 1 LWB plot TO 1 UPB plot DO
FOR j FROM 2 LWB plot TO 2 UPB plot DO
print( ( " ", plot[ i, j ] ) )
OD;
print( ( newline ) )
OD
END
</syntaxhighlight>
{{out}}
<pre>
-9-4i -9+4i -8-5i -8-3i -8+3i -8+5i -7-2i -7+0i -7+2i -6-5i -6-1i -6+1i
-6+5i -5-8i -5-6i -5-4i -5-2i -5+2i -5+4i -5+6i -5+8i -4-9i -4-5i -4-1i
-4+1i -4+5i -4+9i -3-8i -3-2i -3+0i -3+2i -3+8i -2-7i -2-5i -2-3i -2-1i
-2+1i -2+3i -2+5i -2+7i -1-6i -1-4i -1-2i -1-1i -1+1i -1+2i -1+4i -1+6i
-0-7i -0-3i -0+3i -0+7i 1-6i 1-4i 1-2i 1-1i 1+1i 1+2i 1+4i 1+6i
2-7i 2-5i 2-3i 2-1i 2+1i 2+3i 2+5i 2+7i 3-8i 3-2i 3+0i 3+2i
3+8i 4-9i 4-5i 4-1i 4+1i 4+5i 4+9i 5-8i 5-6i 5-4i 5-2i 5+2i
5+4i 5+6i 5+8i 6-5i 6-1i 6+1i 6+5i 7-2i 7+0i 7+2i 8-5i 8-3i
8+3i 8+5i 9-4i 9+4i
</pre>
<pre style="font-size:60%;">
|
|
* * | * *
* | *
* * * * * * *
* * * * | * * * *
* * * * | * * * *
* * * * | * * * *
* * * * * * * * *
* * * * * | * * * * *
* * * * | * * * *
* * * * * * | * * * * * *
* * | * *
* * * * * * * | * * * * * * *
* * * * * * | * * * * * *
* * * * | * * * *
* * * * * * * * | * * * * * * * *
* * * * * * * | * * * * * * *
* * * * * | * * * * *
* * * * * * * * | * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * | * * * * * *
* * * * * * * * | * * * * * * * *
* * * * * * | * * * * * *
* * * * * | * * * * *
* * * * * * * * * | * * * * * * * * *
* * * * * * * * * * * | * * * * * * * * * * *
* * * * * | * * * * *
* * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * | * * * * * * * * *
* * * * * | * * * * *
* * * * * * * * * * * | * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * | * * * * * *
* * * * * * * * * | * * * * * * * * *
* * * * * * * * * * | * * * * * * * * * *
* * * * * * * * * * | * * * * * * * * * *
* * * * * * * * | * * * * * * * *
* * * * * * * * * * * * | * * * * * * * * * * * *
* * * * * * | * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * | * * * * * * * * * * * * * *
* * * * * * * | * * * * * * *
* * * * * * * * * * * * | * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * | * * * * * * * *
* * * * * * * * * * * * * * * | * * * * * * * * * * * * * * *
* * * * * * * * * * * | * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * * | * * * * * * * * * * * * *
* * * * * * * * * * * * | * * * * * * * * * * * *
- - - * - - - * - - - - - - - - - - - * - - - - - - - * - - - * - - - - - - - * - - - * - - - * - - + - - * - - - * - - - * - - - - - - - * - - - * - - - - - - - * - - - - - - - - - - - * - - - * - - -
* * * * * * * * * * * * | * * * * * * * * * * * *
* * * * * * * * * * * * * | * * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * | * * * * * * * * * * *
* * * * * * * * * * * * * * * | * * * * * * * * * * * * * * *
* * * * * * * * | * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * | * * * * * * * * * * * *
* * * * * * * | * * * * * * *
* * * * * * * * * * * * * * | * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * | * * * * * *
* * * * * * * * * * * * | * * * * * * * * * * * *
* * * * * * * * | * * * * * * * *
* * * * * * * * * * | * * * * * * * * * *
* * * * * * * * * * | * * * * * * * * * *
* * * * * * * * * | * * * * * * * * *
* * * * * * | * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * | * * * * * * * * * * *
* * * * * | * * * * *
* * * * * * * * * | * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * *
* * * * * | * * * * *
* * * * * * * * * * * | * * * * * * * * * * *
* * * * * * * * * | * * * * * * * * *
* * * * * | * * * * *
* * * * * * | * * * * * *
* * * * * * * * | * * * * * * * *
* * * * * * | * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * | * * * * * * * *
* * * * * | * * * * *
* * * * * * * | * * * * * * *
* * * * * * * * | * * * * * * * *
* * * * | * * * *
* * * * * * | * * * * * *
* * * * * * * | * * * * * * *
* * | * *
* * * * * * | * * * * * *
* * * * | * * * *
* * * * * | * * * * *
* * * * * * * * *
* * * * | * * * *
* * * * | * * * *
* * * * | * * * *
* * * * * * *
* | *
* * | * *
|
</pre>
 
=={{header|F_Sharp|F#}}==
Line 45 ⟶ 231:
-9-4i -9+4i -8-7i -8-5i -8-3i -8+3i -8+5i -8+7i -7-8i -7-2i -7 -7+2i -7+8i -6-5i -6-1i -6+1i -6+5i -5-8i -5-6i -5-4i -5-2i -5+2i -5+4i -5+6i -5+8i -4-9i -4-5i -4-1i -4+1i -4+5i -4+9i -3-8i -3-2i -3 -3+2i -3+8i -2-7i -2-5i -2-3i -2-1i -2+1i -2+3i -2+5i -2+7i -1-6i -1-4i -1-2i -1-1i -1+1i -1+2i -1+4i -1+6i 0-7i 0-3i 0+3i 0+7i 1-6i 1-4i 1-2i 1-1i 1+1i 1+2i 1+4i 1+6i 2-7i 2-5i 2-3i 2-1i 2+1i 2+3i 2+5i 2+7i 3-8i 3-2i 3 3+2i 3+8i 4-9i 4-5i 4-1i 4+1i 4+5i 4+9i 5-8i 5-6i 5-4i 5-2i 5+2i 5+4i 5+6i 5+8i 6-5i 6-1i 6+1i 6+5i 7-8i 7-2i 7 7+2i 7+8i 8-7i 8-5i 8-3i 8+3i 8+5i 8+7i 9-4i 9+4i
</pre>
 
=={{header|J}}==
Implementation: <syntaxhighlight lang="j">isgpri=: {{
3,021

edits