java代码求1000以内的所有的阿姆斯特朗数。 (如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。例如:153=1^3+5^3+3^3 7=7^1 407=4^3+0^3+7^3)
时间: 2023-12-23 09:04:49 浏览: 77
下面是 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。
水仙花数就是3位数的阿姆斯特朗数(如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数),那么扩展进一步,接收键盘录入几位数,就输出几位数的阿姆斯特朗数。Java
水仙花数是指对于任意位数的整数,它的每个位上的数字立方和等于原数本身。例如,153是一个3位数的水仙花数,因为 \(1^3 + 5^3 + 3^3 = 153\)。
在Java中,你可以通过编写一个简单的程序来接受用户输入的位数,然后找出相应位数的水仙花数。以下是一个基本的示例:
```java
import java.util.Scanner;
public class NarcissisticNumber {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数字的位数:");
int n = scanner.nextInt();
for (int number = 0; ; ++number) {
if (isNarcissistic(number, n)) {
System.out.format("%d 是一个%dd位水仙花数.", number, n);
}
if (number > 999 || // 限制最高位数防止无限循环
// 如果位数超过1000,停止搜索
n > 4) break;
}
scanner.close();
}
// 判断给定数字是否是n位的水仙花数
private static boolean isNarcissistic(int num, int n) {
String strNum = Integer.toString(num);
int sum = 0;
for (char digit : strNum.toCharArray()) {
sum += Math.pow(Integer.parseInt(digit), n);
}
return sum == num;
}
}
```
在这个程序中,`isNarcissistic` 方法用于检查一个数字是否是n位的水仙花数,`main` 方法获取用户输入并遍历所有可能的数字直到找到水仙花数或达到某个上限。用户可以输入1到4之间的数字,因为1位的水仙花数只有一个(0),而5位以上的水仙花数目前只发现了一个例子(153437080)。
阅读全文