先罗列一下结果
- 1 2 3 4 5 6 7 8 9
- 没有
- 153 370 371 407
- 1634 8208 9474
- 54748 92727 93084
- 548834
- 1741725 4210818 9800817 9926315
- 24678050 24678051 88593477
- 146511208 472335975 534494836 912985153
- 4679307774
跑10位自幂数的时候要等很久。
代码
package SelfIdempotentNumber;
public class SelfIdempotent {
public static void main(String[] args) {
long sum; //记录尾数的次方和
long temp; //临时存储要求的值
int mant; //保存值的尾数
long num; //计算的值
int length; //值的长度
for (num = 1; num < 10000000000L; num++) {
sum = 0; //每循环一次,恢复 0
length = 0;
temp = num;
long k = num;
while(k > 0){ //求长度,用于求尾数的次方
length++;
k /= 10;
}
while(temp > 0){
mant = (int)(temp % 10);
temp = temp / 10;
sum += Math.pow(mant, length);
}
if (sum == num) {
System.out.print(num+" ");
}
}
}
}