题目描述
对一个数十进制表示时的每一位数字乘五次方再求和,会得到一个数的五次方数
例如:1024的五次方数为1+0+32+1024=1057
有这样一些神奇的数,它的五次方数就是它自己,而且这样的数竟然只有有限多个
从小到大输出所有这样的数
输入
无
输出
每个数独立一行输出
样例输入
无
样例输出
无
思路:找出范围,求最高的范围为几位数
根据推论9的5次方等于59049,所以当增加6位999999时,所有位数的9的5次方的和等于354294,当再增加一位时,所有位数的9的5次方的和等于413343
7位的最小值1000000绝对大于9的5次方,所以依次类推,最大界限位为6位999999时,所有位数的9的5次方的和等于35429
ps:此处题目不严谨,0,1的5次方是本身,题目未说明情况下自动排除了
我的代码结果包括0和1
代码实现
/**
* 五次方数
*/
public class Main {
public static void main(String[] args) {
//找出范围内符合条件的五次方数并输出
for (int i=0;i<354294;i++){
if(five(i)){
System.out.println(i);
}
}
}
public static boolean five(int n){
int m=n;
int sum=0;//存放结果
while (m!=0){
sum+=(int)Math.pow(m%10,5);//每一位数的5次方相加
m=m/10;//向前一位
}
if (sum==n){
return true;
}else {
return false;
}
}
}