1. 问题描述:
观察下面的现象,某个数字的立方,按位累加仍然等于自身。
1^3 = 1
8^3 = 512 5+1+2=8
17^3 = 4913 4+9+1+3=17
...
请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?
2. 思路分析:
① 主要是进行枚举加上条件即可,首先需要确定的是for循环应该循环到哪里,我们知道99 * 99 * 99 = 970299,大于了100之后的数字的立方数那么各位数字之和更不可能等于立方之前的那个数了,所以只需要循环到99就可以了
③ 因为要取到数字的每一位,我们经常的做法是将数字转化为字符串来进行处理,这样遍历字符串取出每一位更加方便,然后使用一个函数进行简单的条件判断即可得到答案,为了检验答案1是否正确,我们可以将满足条件的数字输出到控制台上
④ 求解到的最终答案是6
3. 具体的代码如下:
public class Main {
static int count = 0;
public static void main(String[] args) {
for(int i = 1; i <= 99; i++){
int n = i * i * i;
int t = sum(n);
if(i == t){
System.out.println(i + " " + n);
count++;
}
}
System.out.println(count);
}
private static int sum(int n) {
String s = String.valueOf(n);
int sum = 0;
for(int i = 0; i < s.length(); i++){
sum += s.charAt(i) - '0';
}
return sum;
}
}