Giuga numbers: Difference between revisions

Added Algol 68
(Added Gambas and grouping BASIC dialects)
(Added Algol 68)
Line 63:
1722
66198
</pre>
 
=={{header|ALGOL 68}}==
<syntaxhighlight lang="algol68">
BEGIN # find some Guiga numbers, composites n such that all their distinct #
# prime factors f exactly divide ( n / f ) - 1 #
 
# find the first four Guiga numbers #
INT g count := 0;
FOR n FROM 2 WHILE g count < 4 DO
INT v := n;
BOOL is guiga := TRUE;
INT f count := 0;
IF NOT ODD v THEN
# 2 is a prime factor of n #
is guiga := ( ( n OVER 2 ) - 1 ) MOD 2 = 0;
IF is guiga THEN
f count +:= 1;
WHILE v MOD 2 = 0 DO v OVERAB 2 OD
FI
FI;
IF is guiga THEN
FOR f FROM 3 BY 2 WHILE f <= v AND is guiga DO
IF v MOD f = 0 THEN
# have a prime factor #
f count +:= 1;
is guiga := ( ( n OVER f ) - 1 ) MOD f = 0;
IF is guiga THEN
# n is still a candidate #
v OVERAB f;
WHILE v > 1 AND v MOD f = 0 DO v OVERAB f OD
FI
FI
OD;
IF is guiga THEN
# n is still a candidate, check it is not prime #
is guiga := f count > 1
FI
FI;
IF is guiga THEN
g count +:= 1;
print( ( " ", whole( n, 0 ) ) )
FI
OD
END
</syntaxhighlight>
{{out}}
<pre>
30 858 1722 66198
</pre>
 
3,043

edits