问题描述:
有些数字的立方的末尾正好是该数字本身。
比如:1,4,5,6,9,24,25,…
请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。
思路分析:
使用循环来遍历10000以内的数字,然后判断每个数字的立方的末尾是否等于数字本身。
两种解决方式:
- 使用取模获取末尾数字,然后判断是否等于原整数本身。此末尾并不是指数字立方后的最后一位,而是以数字本身结尾的部分。
- 将数字转换为字符串类型,然后使用字符串的endsWith()方法判断立方数的最后一位数字是否等于原数字。
需要注意,对于较大的整数,可能会出现整型溢出的问题,因此需要使用 long 类型或 BigInteger 类型来处理。
代码实现:
取模运算:
public class Main {public static void main(String[] args) {int count = 0;for (long i = 1; i <= 10000; i++) {long cube = i * i * i;long lastDigits = cube % ((long) Math.pow(10, String.valueOf(i).length()));if (lastDigits == i) {count++;}}System.out.println("在10000以内的数字中,满足条件的正整数个数为:" + count);}
}
字符串转换:
import java.math.BigInteger;
public class Main {public static void main(String[] args) {int count = 0;for (int i = 1; i <= 10000; i++) {BigInteger num = BigInteger.valueOf(i);BigInteger cube = num.pow(3);if (cube.toString().endsWith(num.toString())) {count++;}}System.out.println("在10000以内的数字中,满足条件的正整数个数为:" + count);}
}