您的位置:首页 > 编程语言 > Java开发

java实现8位以为的自幂数(水仙花数)

2018-01-22 17:44 549 查看
/**
* 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant,
* PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number); 水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的
* n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。 水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。
* 附:其他位数的自幂数名字
* 一位自幂数:独身数
* 两位自幂数:没有
*  三位自幂数:水仙花数
*  四位自幂数:四叶玫瑰数
*  五位自幂数:五角星数
*  六位自幂数:六合数
* 七位自幂数:北斗七星数
* 八位自幂数:八仙数
* 九位自幂数:九九重阳数
* 十位自幂数:十全十美数
*
* @author idea-pcfff
*
*/
public class Narcissistic {

/**
* 计算 8位以内的自幂数
* @param weishu
*/
public static void armstrongLessThan8Bit(int weishu) {
int max = (int) Math.pow(10, weishu) - 1;
int num = (int)Math.pow(10, weishu-1);
int a[] = new int[weishu];
System.out.print(weishu + "位的水仙花数有:\t");
while (num <= max) {
int sum = 0;
for (int i = 0; i < weishu; i++) {
a[i] = num / (int) Math.pow(10, weishu - i - 1) % 10;
}
for (int i = 0; i < weishu; i++) {
sum = sum + (int) Math.pow(a[i], weishu);
}
if (num == sum) {
System.out.print(num + "\t");
}
num++;
}
}

public static void main(String[] args) {
armstrongLessThan8Bit(3);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: