用Java编写一个程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数。
时间: 2023-04-01 09:03:41 浏览: 184
好的,我可以回答这个问题。以下是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 三个变量来分别表示这个三位数的百位、十位、个位数字,然后根据水仙花数的定义来判断该数是否是水仙花数,如果是,则将该数输出。
问题描述】编写一个java程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数。所谓 的水仙花数是:如果一个三位数的个位数、十位数、百位数的立方和等于该数自身,就称这个数为水仙花数。 【输入形式】输入一个正整数N。 【输出形式】输出从100到N之间的所有水仙花数,每个数以回车结束。 【样例输入】 400 【样例输出】 153 370 371 【样例说明】输入一个的正整数400,输出为100~400之间的水仙花数153,370,371
以下是Java程序的实现:
```
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
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.println(i);
}
}
}
}
```
首先从控制台读入正整数N,然后利用循环遍历100到N之间的所有数。在每次循环中,将当前数的百位、十位和个位分别计算出来,然后判断当前数是否等于这三个数的立方和。如果是,就输出当前数。