Duffinian numbers: Difference between revisions
Content added Content deleted
(→{{header|Ruby}}: Add Ruby) |
Not a robot (talk | contribs) (add Modula-2) |
||
Line 1,333: | Line 1,333: | ||
860671-860673 910115-910117 913951-913953 963271-963273 968255-968257 |
860671-860673 910115-910117 913951-913953 963271-963273 968255-968257 |
||
991231-991233</pre> |
991231-991233</pre> |
||
=={{header|Modula-2}}== |
|||
<syntaxhighlight lang="modula2">MODULE DuffinianNumbers; |
|||
FROM InOut IMPORT WriteCard, WriteString, WriteLn; |
|||
CONST |
|||
MaxSigma = 10000; |
|||
VAR |
|||
seen, cur: CARDINAL; |
|||
sigma: ARRAY [1..MaxSigma] OF CARDINAL; |
|||
PROCEDURE CalculateSigmaTable; |
|||
VAR i, j: CARDINAL; |
|||
BEGIN |
|||
FOR i := 1 TO MaxSigma DO |
|||
sigma[i] := 0 |
|||
END; |
|||
FOR i := 1 TO MaxSigma DO |
|||
j := i; |
|||
WHILE j <= MaxSigma DO |
|||
INC(sigma[j], i); |
|||
INC(j, i); |
|||
END |
|||
END |
|||
END CalculateSigmaTable; |
|||
PROCEDURE GCD(a, b: CARDINAL): CARDINAL; |
|||
VAR c: CARDINAL; |
|||
BEGIN |
|||
WHILE b # 0 DO |
|||
c := a MOD b; |
|||
a := b; |
|||
b := c |
|||
END; |
|||
RETURN a |
|||
END GCD; |
|||
PROCEDURE IsDuffinian(n: CARDINAL): BOOLEAN; |
|||
BEGIN |
|||
RETURN (sigma[n] > n+1) AND (GCD(n, sigma[n]) = 1) |
|||
END IsDuffinian; |
|||
PROCEDURE IsDuffinianTriple(n: CARDINAL): BOOLEAN; |
|||
BEGIN |
|||
RETURN IsDuffinian(n) AND IsDuffinian(n+1) AND IsDuffinian(n+2) |
|||
END IsDuffinianTriple; |
|||
BEGIN |
|||
CalculateSigmaTable; |
|||
WriteString("First 50 Duffinian numbers:"); |
|||
WriteLn; |
|||
cur := 0; |
|||
FOR seen := 1 TO 50 DO |
|||
REPEAT INC(cur) UNTIL IsDuffinian(cur); |
|||
WriteCard(cur, 4); |
|||
IF seen MOD 10 = 0 THEN WriteLn END |
|||
END; |
|||
WriteLn; |
|||
WriteString("First 15 Duffinian triples:"); |
|||
WriteLn; |
|||
cur := 0; |
|||
FOR seen := 1 TO 15 DO |
|||
REPEAT INC(cur) UNTIL IsDuffinianTriple(cur); |
|||
WriteCard(cur, 6); |
|||
WriteCard(cur+1, 6); |
|||
WriteCard(cur+2, 6); |
|||
WriteLn |
|||
END |
|||
END DuffinianNumbers.</syntaxhighlight> |
|||
{{out}} |
|||
<pre>First 50 Duffinian numbers: |
|||
4 8 9 16 21 25 27 32 35 36 |
|||
39 49 50 55 57 63 64 65 75 77 |
|||
81 85 93 98 100 111 115 119 121 125 |
|||
128 129 133 143 144 155 161 169 171 175 |
|||
183 185 187 189 201 203 205 209 215 217 |
|||
First 15 Duffinian triples: |
|||
63 64 65 |
|||
323 324 325 |
|||
511 512 513 |
|||
721 722 723 |
|||
899 900 901 |
|||
1443 1444 1445 |
|||
2303 2304 2305 |
|||
2449 2450 2451 |
|||
3599 3600 3601 |
|||
3871 3872 3873 |
|||
5183 5184 5185 |
|||
5617 5618 5619 |
|||
6049 6050 6051 |
|||
6399 6400 6401 |
|||
8449 8450 8451</pre> |
|||
=={{header|Nim}}== |
=={{header|Nim}}== |