概述


数论中,水仙花Narcissistic number),也被称为超完全数字不变数pluperfect digital invariant, PPDI)、自恋自幂数阿姆斯壮阿姆斯特朗数Armstrong number) ,用来描述一个N位非负整数,其各位数字的N次方和等于该数本身。

举例


例如153、370、371及407就是三位超完全数字不变数,其各个数之立方和等于该数:

153 = 1 + 5 + 3。
370 = 3 + 7 + 0。
371 = 3 + 7 + 1。
407 = 4 + 0 + 7。

Java算法


 /**
* A Narcissistic number is a number that is the sum of its own digits each
* raised to the power of the number of digits. E.g., 0, 1, 2, 3, 4, 5, 6, 7, 8,
* 9, 153, 370, 371, 407, 1634, 8208, 9474.
*/
public class NarcissisticNumberExample {
//判断value是否为水仙花数
public static boolean isNarcissisticNumber(int value) {
int temp = value;
int digits = 0;
//判断value有几位数,保存在digits
while (temp > 0) {
digits++;
temp /= 10;
}
temp = value;
int sum = 0;
while (temp > 0) {
sum += Math.pow(temp % 10, digits);
temp /= 10;
}
return sum == value;
} //开始数和结束数
public static void printNarcissistics(int from, int to) {
int which=0;
for (int i = from; i <= to; i++)
if (isNarcissisticNumber(i)){
which++;
System.out.println("第"+which+"个水仙数是:"+i);
} } //1000里有几个水仙数
public static void main(String[] args) {
printNarcissistics(0,1000);
} }

结果


第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

参考链接:

维基百科:https://zh.wikipedia.org/wiki/%E6%B0%B4%E4%BB%99%E8%8A%B1%E6%95%B0

Java for Beginners-Narcissistic Number: http://primaryjava.blogspot.hk/2013/10/narcissistic-number.html

04-17 18:03