一、题目
立方变自身
观察下面的现象,某个数字的立方,按位累加仍然等于自身。
1^3 = 1
8^3 = 512 5+1+2=8
17^3 = 4913 4+9+1+3=17
...请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?
请填写该数字,不要填写任何多余的内容或说明性的文字
二、分析
首先我们要找到这些数。以循环遍历的方式进行寻找,但是我们遍历的终止条件不知道,我们尝试找一下,这个无非就是一个数字,既然题目中问有多少个正整数,那我们一定是有它的上界的,那怎么才能知道它的上限呢,一个多大的 数字的立方 每位相加等于它本身,比如 60^3 = 216000,六个数相加最大时等于54,也达不到60,所以当数足够大时,不可能再有数字的立方按位累加仍然等于自身。
在循环遍历的时候,我们要调用一个方法,这个方法可以算一个数字的按位和。
代码:
package lan2015;
public class B立方变自身 {
public static void main(String[] args) {
int count = 0;
for(int i = 1; i < 60; i++) {
if(i == f(i*i*i)) {
count ++;
}
}
System.out.println(count);
}
public static int f(int m) {
int sum = 0;
while(m > 0) {
sum += m % 10;
m /= 10;
}
return sum;
}
}
结果:6