水仙花数相比大家都不陌生,一个三位数,它的每一位的位数次方之和等于这个数的本身,那么这个数就是一个水仙花数.
实际上,一个数,无论它是多少位,只要它的每一位的位数的次方之和等于这个数本身,那么这个数就叫做自幂数.
考虑到计算机的运算能力问题,这里我们写一个程序求出1~999999之间的自幂数.
import java.util.Scanner;
public class TestDemo1 {
public static void findNum(int n) {
for (int i = 1; i <= n; i++) {
int tmp = i;
int count = 0;
while (tmp != 0){
count++;
tmp /= 10;
}
tmp = i;
double sum = 0;
while (tmp != 0){
sum += Math.pow(tmp%10,count);
tmp /= 10;
}
if(sum == i){
System.out.println(i);
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();//999999
findNum(n);
}
}
这里看到我们求得的结果是正确的!