Magnanimous numbers: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (add BASIC) |
Not a robot (talk | contribs) (add Modula-2) |
||
Line 1,564: | Line 1,564: | ||
{17992,19972,20209,20261,20861,22061,22201,22801,22885,24407} |
{17992,19972,20209,20261,20861,22061,22201,22801,22885,24407} |
||
{486685,488489,515116,533176,551558,559952,595592,595598,600881,602081}</pre> |
{486685,488489,515116,533176,551558,559952,595592,595598,600881,602081}</pre> |
||
=={{header|Modula-2}}== |
|||
<syntaxhighlight lang="modula2">MODULE MagnanimousNumbers; |
|||
FROM InOut IMPORT WriteString, WriteCard, WriteLn; |
|||
VAR n, i: CARDINAL; |
|||
PROCEDURE prime(n: CARDINAL): BOOLEAN; |
|||
VAR d: CARDINAL; |
|||
BEGIN |
|||
IF n<2 THEN RETURN FALSE END; |
|||
IF n MOD 2 = 0 THEN RETURN n = 2 END; |
|||
IF n MOD 3 = 0 THEN RETURN n = 3 END; |
|||
d := 5; |
|||
WHILE d*d <= n DO |
|||
IF n MOD d = 0 THEN RETURN FALSE END; |
|||
INC(d, 2); |
|||
IF n MOD d = 0 THEN RETURN FALSE END; |
|||
INC(d, 4) |
|||
END; |
|||
RETURN TRUE |
|||
END prime; |
|||
PROCEDURE magnanimous(n: CARDINAL): BOOLEAN; |
|||
VAR left, right, shift: CARDINAL; |
|||
BEGIN |
|||
left := n; |
|||
right := 0; |
|||
shift := 1; |
|||
WHILE left >= 10 DO |
|||
INC(right, (left MOD 10) * shift); |
|||
shift := shift * 10; |
|||
left := left DIV 10; |
|||
IF NOT prime(left + right) THEN RETURN FALSE END |
|||
END; |
|||
RETURN TRUE |
|||
END magnanimous; |
|||
BEGIN |
|||
n := 0; |
|||
FOR i := 1 TO 250 DO |
|||
WHILE NOT magnanimous(n) DO INC(n) END; |
|||
IF i=1 THEN WriteString("1 - 45:"); WriteLn |
|||
ELSIF i=240 THEN WriteString("241 - 250:"); WriteLn |
|||
END; |
|||
IF (i <= 45) OR (i > 240) THEN |
|||
WriteCard(n, 7); |
|||
IF i MOD 5 = 0 THEN WriteLn END |
|||
END; |
|||
INC(n) |
|||
END |
|||
END MagnanimousNumbers.</syntaxhighlight> |
|||
{{out}} |
|||
<pre>1 - 45: |
|||
0 1 2 3 4 |
|||
5 6 7 8 9 |
|||
11 12 14 16 20 |
|||
21 23 25 29 30 |
|||
32 34 38 41 43 |
|||
47 49 50 52 56 |
|||
58 61 65 67 70 |
|||
74 76 83 85 89 |
|||
92 94 98 101 110 |
|||
241 - 250: |
|||
17992 19972 20209 20261 20861 |
|||
22061 22201 22801 22885 24407</pre> |
|||
=={{header|Nim}}== |
=={{header|Nim}}== |
||
Line 1,624: | Line 1,692: | ||
391st through 400th magnanimous numbers: |
391st through 400th magnanimous numbers: |
||
486685 488489 515116 533176 551558 559952 595592 595598 600881 602081</pre> |
486685 488489 515116 533176 551558 559952 595592 595598 600881 602081</pre> |
||
=={{header|Pascal}}== |
=={{header|Pascal}}== |
||
{{works with|Free Pascal}} |
{{works with|Free Pascal}} |