Java求该n位数各位上数字的n次幂之和等于该数
时间: 2024-10-14 14:03:20 浏览: 29
求给定正整数的位数和并逆序打印各位数
在Java中,要解决这个问题,你可以编写一个函数来检查给定的n位数是否满足条件,即其每位数字的n次方之和等于原数本身。这个过程可以分为以下几个步骤:
1. **读取输入**:首先,你需要接收用户输入的n位数作为字符串。
2. **遍历每一位**:然后,将字符串转换为整数数组,逐个提取每个数字,并计算它们的n次方。
3. **计算总和**:对每个数字的n次方求和,确保结果存储在一个变量中。
4. **比较结果**:最后,对比计算得到的总和是否与原始数字相等。如果相等,则返回true;否则返回false。
下面是一个简单的示例代码片段:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个n位数:");
String numStr = scanner.nextLine();
if (numStr.length() > 9 || numStr.length() <= 0) {
System.out.println("无效的输入,n位数应介于1到9之间.");
return;
}
int number = Integer.parseInt(numStr);
int sumOfPowers = getSumOfDigitsToThePower(number, numStr.length());
if (number == sumOfPowers) {
System.out.println("数字 " + numStr + " 满足条件,每位数字的" + numStr.length() + "次方之和等于它自身.");
} else {
System.out.println("数字 " + numStr + " 不满足条件.");
}
}
private static int getSumOfDigitsToThePower(int num, int power) {
int sum = 0;
while (num != 0) {
int digit = num % 10;
sum += Math.pow(digit, power);
num /= 10;
}
return sum;
}
}
```
阅读全文