Giuga numbers: Difference between revisions

→‎{{header|ALGOL 68}}: Must spell Giuga correctly
(Added Algol 68)
(→‎{{header|ALGOL 68}}: Must spell Giuga correctly)
Line 67:
=={{header|ALGOL 68}}==
<syntaxhighlight lang="algol68">
BEGIN # find some GuigaGiuga numbers, composites n such that all their distinct #
# prime factors f exactly divide ( n / f ) - 1 #
 
# find the first four GuigaGiuga numbers #
INT g count := 0;
FOR n FROM 2 WHILE g count < 4 DO
INT v := n;
BOOL is guigagiuga := TRUE;
INT f count := 0;
IF NOT ODD v THEN
# 2 is a prime factor of n #
is guigagiuga := ( ( n OVER 2 ) - 1 ) MOD 2 = 0;
IF is guigagiuga THEN
f count +:= 1;
WHILE v MOD 2 = 0 DO v OVERAB 2 OD
FI
FI;
IF is guigagiuga THEN
FOR f FROM 3 BY 2 WHILE f <= v AND is guigagiuga DO
IF v MOD f = 0 THEN
# have a prime factor #
f count +:= 1;
is guigagiuga := ( ( n OVER f ) - 1 ) MOD f = 0;
IF is guigagiuga THEN
# n is still a candidate #
v OVERAB f;
Line 97:
FI
OD;
IF is guigagiuga THEN
# n is still a candidate, check it is not prime #
is guigagiuga := f count > 1
FI
FI;
IF is guigagiuga THEN
g count +:= 1;
print( ( " ", whole( n, 0 ) ) )
3,032

edits