Narcissistic decimal number: Difference between revisions
Content added Content deleted
No edit summary |
|||
Line 2,739: | Line 2,739: | ||
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 |
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> |
</pre> |
||
=={{header|Ksh}}== |
|||
<lang ksh> |
|||
#!/bin/ksh |
|||
# Narcissistic decimal number |
|||
# # Variables: |
|||
# |
|||
# # Functions: |
|||
# |
|||
# # Function _isnarcissist(n) - return 1 if n is a narcissistic decimal number |
|||
# |
|||
function _isnarcissist { |
|||
typeset _n ; integer _n=$1 |
|||
(( ${_n} == $(_sumpowdigits ${_n}) )) && return 1 |
|||
return 0 |
|||
} |
|||
# # Function _sumpowdigits(n) - return sum of the digits raised to #digit power |
|||
# |
|||
function _sumpowdigits { |
|||
typeset _n ; integer _n=$1 |
|||
typeset _i ; typeset -si _i |
|||
typeset _sum ; integer _sum=0 |
|||
for ((_i=0; _i<${#_n}; _i++)); do |
|||
(( _sum+=(${_n:_i:1}**${#_n}) )) |
|||
done |
|||
echo ${_sum} |
|||
} |
|||
###### |
|||
# main # |
|||
###### |
|||
integer i cnt=0 |
|||
for ((i=0; cnt<25; i++)); do |
|||
_isnarcissist ${i} ; (( $? )) && printf "%3d. %d\n" $(( ++cnt )) ${i} |
|||
done |
|||
</lang> |
|||
{{out}}<pre> |
|||
1. 0 |
|||
2. 1 |
|||
3. 2 |
|||
4. 3 |
|||
5. 4 |
|||
6. 5 |
|||
7. 6 |
|||
8. 7 |
|||
9. 8 |
|||
10. 9 |
|||
11. 153 |
|||
12. 370 |
|||
13. 371 |
|||
14. 407 |
|||
15. 1634 |
|||
16. 8208 |
|||
17. 9474 |
|||
18. 54748 |
|||
19. 92727 |
|||
20. 93084 |
|||
21. 548834 |
|||
22. 1741725 |
|||
23. 4210818 |
|||
24. 9800817 |
|||
25. 9926315</pre> |
|||
=={{header|Lua}}== |
=={{header|Lua}}== |