Narcissistic decimal number: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add SETL) |
Not a robot (talk | contribs) (Add Cowgol) |
||
Line 2,012: | Line 2,012: | ||
NIL |
NIL |
||
</pre> |
</pre> |
||
=={{header|Cowgol}}== |
|||
<syntaxhighlight lang="cowgol">include "cowgol.coh"; |
|||
sub pow(n: uint32, p: uint8): (r: uint32) is |
|||
r := 1; |
|||
while p>0 loop |
|||
r := r * n; |
|||
p := p - 1; |
|||
end loop; |
|||
end sub; |
|||
sub narcissist(n: uint32): (r: uint8) is |
|||
var digits: uint8[10]; |
|||
var len: uint8 := 0; |
|||
var number := n; |
|||
while n>0 loop |
|||
digits[len] := (n % 10) as uint8; |
|||
n := n / 10; |
|||
len := len + 1; |
|||
end loop; |
|||
var i := len; |
|||
var powsum: uint32 := 0; |
|||
while i>0 loop |
|||
i := i - 1; |
|||
powsum := powsum + pow(digits[i] as uint32, len); |
|||
end loop; |
|||
r := 0; |
|||
if powsum == number then |
|||
r := 1; |
|||
end if; |
|||
end sub; |
|||
var seen: uint8 := 0; |
|||
var n: uint32 := 0; |
|||
while seen < 25 loop |
|||
if narcissist(n) != 0 then |
|||
print_i32(n); |
|||
print_nl(); |
|||
seen := seen + 1; |
|||
end if; |
|||
n := n + 1; |
|||
end loop;</syntaxhighlight> |
|||
{{out}} |
|||
<pre>0 |
|||
1 |
|||
2 |
|||
3 |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
153 |
|||
370 |
|||
371 |
|||
407 |
|||
1634 |
|||
8208 |
|||
9474 |
|||
54748 |
|||
92727 |
|||
93084 |
|||
548834 |
|||
1741725 |
|||
4210818 |
|||
9800817 |
|||
9926315</pre> |
|||
=={{header|D}}== |
=={{header|D}}== |