什么是斯特朗数?
斯特朗数(Strong Number),又称为阶乘和数,是指一个数的每一位数字的阶乘之和等于它本身。例如,145是一个斯特朗数,因为1! + 4! + 5! = 1 + 24 + 120 = 145。
判断一个数是否为斯特朗数
使用代码实现
下面是使用Java代码判断一个数是否为斯特朗数的函数实现,“isStrongNumber”函数接受一个整型参数n,返回该数是否为斯特朗数的布尔值。
public static boolean isStrongNumber(int n) {
int temp = n;
int sum = 0;
while (temp > 0) {
int digit = temp % 10;
sum += factorial(digit);
temp /= 10;
}
return sum == n;
}
private static int factorial(int n) {
if (n == 0) {
return 1;
}
int result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
我们先使用“factorial”函数计算一个数字的阶乘,然后遍历数位,从最低位开始,将每个数字的阶乘加起来,最后判断是否等于原数。
手动计算
也可以手动计算一个数是否为斯特朗数。以145为例,我们将其每一位数字的阶乘相加:
1! + 4! + 5! = 1 + 24 + 120 = 145
因此145为斯特朗数。
注意事项
- 零不是斯特朗数,因为0的阶乘为1,不能通过相加等于0本身。
- 在计算一个数字的阶乘时,需要注意它的数据类型,如果不加限制,阶乘结果可能会溢出。
- 在判断两个数是否相等时,要使用“==”运算符而不是“equals”方法,因为equals方法比较的是对象内容而不是对象引用,可能会出现错误的结果。
代码示例
下面的代码演示了如何使用“isStrongNumber”函数判断一个数是否为斯特朗数:
public static void main(String[] args) {
int n = 145;
if (isStrongNumber(n)) {
System.out.println(n + " is a strong number.");
} else {
System.out.println(n + " is not a strong number.");
}
}
执行结果为:“145 is a strong number.”