用Java编写一个程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数。
时间: 2023-04-01 07:03:41 浏览: 304
好的,我可以回答这个问题。以下是Java程序的代码:
import java.util.Scanner;
public class NarcissisticNumber {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一个正整数N(N大于等于100小于等于999): ");
int n = input.nextInt();
System.out.println("100~" + n + "之间的所有水仙花数为:");
for (int i = 100; i <= n; i++) {
int a = i / 100;
int b = (i / 10) % 10;
int c = i % 10;
if (i == a * a * a + b * b * b + c * c * c) {
System.out.print(i + " ");
}
}
}
}
相关问题
用java编写一个程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数。所谓 的水仙花数是:如果一个三位数的个位数、十位数、百位数的立方和等于该数自身,就称这个数为水仙花数。
以下是用 Java 编写的程序,可以求解题目所述的问题:
```java
import java.util.Scanner;
public class NarcissisticNumber {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个正整数N(N大于等于100小于等于999): ");
int n = scanner.nextInt();
scanner.close();
System.out.print("100~" + n + "之间的水仙花数有: ");
for (int i = 100; i <= n; i++) {
int x = i / 100; // 百位数
int y = (i / 10) % 10; // 十位数
int z = i % 10; // 个位数
if (i == x * x * x + y * y * y + z * z * z) {
System.out.print(i + " ");
}
}
}
}
```
程序运行时,会提示用户输入一个正整数 N,然后会计算出 100~N 之间所有的水仙花数,并输出结果。程序中使用了 for 循环来遍历 100~N 之间的所有三位数,使用了 x、y、z 三个变量来分别表示这个三位数的百位、十位、个位数字,然后根据水仙花数的定义来判断该数是否是水仙花数,如果是,则将该数输出。
编写一个程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数。所谓 的水仙花数是:如果一个三位数的个位数、十位数、百位数的立方和等于该数自身,就称这个数为水仙花数。简单点java
好的,下面是一个简单的 Java 程序来找出从 100 到 N 之间的所有水仙花数。
```java
import java.util.Scanner;
public class NarcissisticNumbers {
public static void main(String[] args) {
// 创建一个Scanner对象用于读取用户输入
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个介于100到999之间的数字N:");
int n = scanner.nextInt();
if (n < 100 || n > 999) {
System.out.println("您输入的数字不在有效范围内!");
} else {
System.out.print("在100-" + n + "之间所有的水仙花数有:");
for(int i=100; i<=n ;i++){
if(isNarcissistic(i)){
System.out.print(i+" ");
}
}
System.out.println(); // 换行以美化输出结果
}
// 关闭资源防止内存泄漏
scanner.close();
}
private static boolean isNarcissistic(int num){
int a,b,c;
c=num%10;// 获取个位数字
b=(num/10)%10; //获取十位数字
a=(num/100); //获取百位数字
return Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3)==num;
}
}
```
上述代码首先会提示用户输入范围内的数值,并检查它是否确实位于指定区间内;接着遍历该区间的每一个值并判断其是不是满足条件(即各个位置上的立方之和刚好等于原数值),如果是则将其打印出来。最后当循环结束之后还会自动换行以便更整洁地显示最终的结果列表。
注意这里通过 `isNarcissistic` 函数来进行具体的判定工作,在主函数里面只需要关心如何处理流程以及接收用户的交互就可以了。
希望这个例子能够帮助理解这个问题!
阅读全文
相关推荐













