java代码求1000以内的所有的阿姆斯特朗数。 (如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。例如:153=1^3+5^3+3^3 7=7^1 407=4^3+0^3+7^3)
时间: 2023-12-23 13:04:49 浏览: 71
下面是 Java 代码实现:
```java
public class ArmstrongNumbers {
public static void main(String[] args) {
int num, sum, digit;
System.out.println("Armstrong numbers from 1 to 1000:");
for (int i = 1; i <= 1000; i++) {
num = i;
sum = 0;
while (num > 0) {
digit = num % 10;
sum += Math.pow(digit, String.valueOf(i).length());
num /= 10;
}
if (i == sum) {
System.out.print(i + " ");
}
}
}
}
```
输出结果为:
```
Armstrong numbers from 1 to 1000:
1 2 3 4 5 6 7 8 9 153 370 371 407
```
相关问题
java代码求1000以内的所有的阿姆斯特朗数。 (如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。例如:153=1^3+5^3+3^3 7=7^1 407=4^3+0^3+7^3)
好的,下面是Java代码,可以求出1000以内的所有阿姆斯特朗数:
```java
public class ArmstrongNumbers {
public static void main(String[] args) {
for (int i=1; i<=1000; i++) {
if (isArmstrong(i)) {
System.out.println(i);
}
}
}
public static boolean isArmstrong(int num) {
int sum = 0;
int originalNum = num;
int numDigits = String.valueOf(num).length();
while (num > 0) {
int digit = num % 10;
sum += Math.pow(digit, numDigits);
num /= 10;
}
return sum == originalNum;
}
}
```
代码中,我们先遍历1到1000之间的所有正整数,然后对于每个数字,调用isArmstrong()方法判断它是否为阿姆斯特朗数。isArmstrong()方法中,我们首先记录下原始的数字,然后计算该数字的位数。接着,我们通过循环每次获取该数字的最后一位,计算它的n次方,并将结果加到sum变量中。最后,我们判断sum是否等于原始的数字,如果是,则该数字是阿姆斯特朗数,返回true,否则返回false。
如果一个n位正整数等于其各位数字的n次方之和
这个问题其实是关于阿姆斯特朗数的定义,也被称为自幂数。所谓阿姆斯特朗数是指一个n位正整数,它的每个位上的数字的n次幂之和等于它本身。
举个例子,153是一个阿姆斯特朗数,因为1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153。
如果你想判断一个n位正整数是否为阿姆斯特朗数,可以按照以下步骤进行:
1. 计算这个数的位数n。
2. 将这个数分解为各个位上的数字,可以使用取模运算和整除运算。
3. 计算每个数字的n次幂,并将它们相加。
4. 如果和等于原数,则这个数是阿姆斯特朗数,否则不是。
代码如下:
```python
def is_armstrong_number(num):
n = len(str(num))
sum = 0
temp = num
while temp > 0:
digit = temp % 10
sum += digit ** n
temp //= 10
return num == sum
```
这样,你就可以通过调用is_armstrong_number函数来判断一个数是否为阿姆斯特朗数了。
阅读全文