Digit power sum
The number 512 is interesting because it is equal to the sum of its digits raised to some power: 5 + 1 + 2 = 8, and 83 = 512. Another example of a number with this property is 614656 = 284.
We shall define an to be the nth term of this sequence and insist that a number must contain at least two digits to have a sum.
You are given that a2 = 512 and a10 = 614656.
Find a30.
package projecteuler;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import junit.framework.TestCase;
public class Prj119 extends TestCase {
public void testDigitPowerSum() {
calAofPowerB();
}
long sumDigit(long val) {
long v = 0;
String str = Long.toString(val);
for (int i = 0; i < str.length(); i++) {
v += Long.parseLong(String.valueOf(str.charAt(i)));
}
return v;
}
void calAofPowerB(){
List<Long> dataList = new ArrayList<Long>();
for( int a = 2 ; a <= 100; a ++){
for( int b = 2; b <= 64; b ++){
Long v = (long) Math.pow(a, b);
if( sumDigit(v) == a){
dataList.add(v);
}
}
}
Collections.sort(dataList);
System.out.println(Arrays.toString(dataList.toArray()));
System.out.println(dataList.size());
System.out.println(dataList.get(29));
}
}