Munchausen numbers: Difference between revisions
Content added Content deleted
(→{{header|Perl 6}}: Added Perl 6 solution) |
(Added Algol 68) |
||
Line 7: | Line 7: | ||
;Task requirements |
;Task requirements |
||
Finds all Munchausen numbers between 1 and 5000 |
Finds all Munchausen numbers between 1 and 5000 |
||
=={{header|ALGOL 68}}== |
|||
<lang algol68># Find Munchausen Numbers between 1 and 5000 # |
|||
# note that 6^6 is 46 656 so we only need to cosider numbers consisting of 0 to 5 # |
|||
# table of Nth powers # |
|||
[]INT nth power = ([]INT( 1, 1, 2 * 2, 3 * 3 * 3, 4 * 4 * 4 * 4, 5 * 5 * 5 * 5 * 5 ))[ AT 0 ]; |
|||
FOR d1 FROM 0 TO 5 DO |
|||
INT d1 part = d1 * 1000; |
|||
FOR d2 FROM 0 TO 5 DO |
|||
INT d2 part = d2 * 100; |
|||
FOR d3 FROM 0 TO 5 DO |
|||
INT d3 part = d3 * 10; |
|||
FOR d4 FROM 0 TO 5 DO |
|||
INT digit power sum := 0; |
|||
IF d1 > 0 THEN |
|||
digit power sum := nth power[ d1 ] |
|||
+ nth power[ d2 ] |
|||
+ nth power[ d3 ] |
|||
+ nth power[ d4 ] |
|||
ELIF d2 > 0 THEN |
|||
digit power sum := nth power[ d2 ] |
|||
+ nth power[ d3 ] |
|||
+ nth power[ d4 ] |
|||
ELIF d3 > 0 THEN |
|||
digit power sum := nth power[ d3 ] |
|||
+ nth power[ d4 ] |
|||
ELSE |
|||
digit power sum := nth power[ d4 ] |
|||
FI; |
|||
INT number = d1 part + d2 part + d3 part + d4; |
|||
IF digit power sum = number THEN |
|||
print( ( whole( number, 0 ), newline ) ) |
|||
FI |
|||
OD |
|||
OD |
|||
OD |
|||
OD</lang> |
|||
{{out}} |
|||
<pre> |
|||
1 |
|||
3435 |
|||
</pre> |
|||
=={{header|C}}== |
=={{header|C}}== |
||
Line 36: | Line 80: | ||
<pre>1 |
<pre>1 |
||
3435</pre> |
3435</pre> |
||
=={{header|C sharp|C#}}== |
=={{header|C sharp|C#}}== |