int a, b, c;
for (int i = 100; i < 1000; i++) {
a = i / 100;
b = i / 10 % 10;
c = i % 10;
int k = a * 100 + b * 10 + c;
if(a*a*a+b*b*b+c*c*c==k){
System.out.println(k);
}
}
for (int i = 100; i < 1000; i++) {
a = i / 100;
b = i / 10 % 10;
c = i % 10;
int k = a * 100 + b * 10 + c;
if(a*a*a+b*b*b+c*c*c==k){
System.out.println(k);
}
}
a*a*a*a*a*a*a*a+b*b*b*b*b*b*b*b+c*c*c*c*c*c*c*c == k
换成if((int)(Math.pow(a,8)+Math.pow(b,8)+Math.pow(c,8))==k)
楼主是这个意思不?其中Math.pow(a,8)是求a的8次方
Java code
a*a*a*a*a*a*a*a+b*b*b*b*b*b*b*b+c*c*c*c*c*c*c*c == k
你可以自己试试 好像 要用long的了哦
还有这个方法好像不行 必须对我的代码进行优化。
long s, t, n = 8;
for (long i = (long) Math.pow(10, n - 1); i < Math.pow(10, n); i++) {
s = 0;
for (int j = 1; j <= n; j++) {
if (j == 1)
t = i % 10;
else
t = (long) (i % Math.pow(10, j) / Math.pow(10, j - 1));
s += Math.pow(t, n);
}
if (s == i) {
System.out.println(s);
}
}
System.out.println("over");
long s, t, n = 4;
for (long i = (long) Math.pow(10, n - 1); i < Math.pow(10, n); i++) {
s = 0;
for (int j = 1; j <= n; j++) {
t = (long) (i % Math.pow(10, j) / Math.pow(10, j - 1));
s += Math.pow(t, n);
}
if (s == i) {
System.out.println(s);
}
}
System.out.println("over");
long s, t, n = 8;
for (long i = (long) Math.pow(10, n - 1); i < Math.pow(10, n); i++) {
s = 0;
for (int j = 1; j <= n; j++) {
t = (long) (i % Math.pow(10, j) / Math.pow(10, j - 1));
s += Math.pow(t, n);
}
if (s == i) {
System.out.println(s);
}
}
System.out.println("over");
for (long i = (long) Math.pow(10, n - 1); i < Math.pow(10, n); i++) {
s = 0;
for (int j = 1; j <= n; j++) {
t ……
for (long i = (long) Math.pow(10, n - 1); i < Math.pow(10, n); i++) {
s = 0;
for (int j = 1; j <= n; j++) {
t = (long) (i % Math.pow(10, j) / Math.pow(10, j - 1));
s += Math.pow(t, n);
}
if (s == i) {
System.out.println(s);
}
}
System.out.println("over");