如果在一个固定的进制中,一个n位自然数等于自身各个数位上数字的n次幂之和,则称此数为自幂数。
以下用java语言求六位数以内所有自幂数。
独身数共有9个: 1,2,3,4,5,6,7,8,9;
水仙花数共有4个:153,370,371,407;
四叶玫瑰数共有3个:1634,8208,9474;
五角星数共有3个:54748,92727,93084;
六合数只有1个:548834;
import java.util.*;
public class HelloWorld {
public static void main(String[] args) {
for (int n =1; n <= 999999; n++ ){
int count = 0;
int tmp = n;
while (tmp != 0){ //判断数字n的位数
count++;
tmp = tmp/10;
}
tmp = n;
int sum = 0;
while (tmp != 0 ) {
sum += Math.pow(tmp%10,count); // tmp%10计算每位上的数字,count是每位数字的次幂数
tmp = tmp/10;
}
if(sum == n && count==1)
System.out.println(sum+"是独身数");
if(sum == n && count==3)
System.out.println(sum+"是水仙花数");
if(sum == n && count==4)
System.out.println(sum+"是四叶玫瑰数");
if(sum == n && count==5)
System.out.println(sum+"是五角星数");
if(sum == n && count==6)
System.out.println(sum+"是六合数");
}
}
}