展开全部
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 10000; i++) {
String n = "" + (long) i * i * i;// 转为字符串
if (n.endsWith("" + i)) {// 判断字32313133353236313431303231363533e59b9ee7ad9431333363363463符串结尾是否是i本身
sum++;
}
}
System.out.println(sum);
}
你的循环是1-10-100-1000-1001-1002-...-10000,建议打个断点,debug一下看看流程
因该改为public static void main(String[] args) {
int i, sum = 0;
for (i = 1; i <= 9; i++) {
if (Math.pow(i, 3) % 10 == i) {
System.out.println(i);
sum++;
}
}
for (i = 10; i <= 99; i++) {
if (Math.pow(i, 3) % 100 == i) {
System.out.println(i);
sum++;
}
}
for (i = 100; i <= 999; i++) {
if (Math.pow(i, 3) % 1000 == i) {
System.out.println(i);
sum++;
}
}
for (i = 1000; i <= 9999; i++) {
if (Math.pow(i, 3) % 10000 == i) {
System.out.println(i);
sum++;
}
}
System.out.println();
System.out.println(sum);
}
如果不用Math.pow(i,3),改用i*i*i
默认结果是int型,int范围是±21亿,1000^3就是10亿了,早就超出范围了,所以只有3个