java程序生成20位数以内的自幂数
时间: 2024-09-15 20:09:54 浏览: 38
自幂数是指一个n位数,其各位数字的n次幂之和等于该数本身。例如,最常见的自幂数是2位数的完全平方数,如1的平方是1,2的平方是4,3的平方是9等等。而对于多于两位数的自幂数,比较著名的是3位数的水仙花数,比如153是一个3位数,且1^3 + 5^3 + 3^3 = 153。
在Java程序中,生成20位数以内的自幂数,可以通过以下步骤来实现:
1. 确定自幂数的位数范围,由于题目要求是20位数以内,我们需要遍历1位数到19位数的所有情况。
2. 对于每一个确定的位数n,我们需要计算出所有可能的数字,并且计算出这些数字的各位数的n次幂之和。
3. 判断这个和是否等于原始的数字,如果是,则该数字就是自幂数。
示例代码如下:
```java
public class AutoPowerNumber {
public static void main(String[] args) {
for (int n = 1; n <= 19; n++) { // 位数从1到19
for (long i = (long) Math.pow(10, n - 1); i < Math.pow(10, n); i++) { // 生成n位数的数字
if (isAutoPowerNumber(i, n)) {
System.out.println(i + " 是一个" + n + "位的自幂数。");
}
}
}
}
public static boolean isAutoPowerNumber(long number, int n) {
long sum = 0;
long temp = number;
while (temp > 0) {
int digit = (int) (temp % 10);
sum += Math.pow(digit, n);
temp /= 10;
}
return sum == number;
}
}
```
这段代码首先定义了一个主方法main,它会遍历1到19位数的所有情况,然后通过isAutoPowerNumber方法来判断一个数是否是自幂数。
阅读全文