用Java写一串求水仙花数的代码
时间: 2023-05-17 15:03:09 浏览: 74
以下是用Java写的求水仙花数的代码:
```java
public class NarcissisticNumber {
public static void main(String[] args) {
for (int i = 100; i < 1000; 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);
}
}
}
}
```
这段代码可以输出所有的三位水仙花数。
相关问题
用java写一个求水仙花数的算法
### 回答1:
求水仙花数的算法:
// Java
public class NarcissisticNumber {
public static void main(String[] args) {
for (int i = 100; i < 1000; i++) {
int hundred = i / 100;
int ten = i / 10 % 10;
int single = i % 10;
if (i == hundred * hundred * hundred + ten * ten * ten + single * single * single) {
System.out.println(i);
}
}
}
}
### 回答2:
水仙花数是指一个三位数,其各个位上的数字的立方和等于该数本身。
我们可以用Java编写一个算法来找出所有的水仙花数。
算法步骤如下:
1. 创建一个循环,从100开始到999,即遍历所有的三位数。
2. 在循环内部,将当前的三位数拆分为个位、十位和百位数字。
3. 使用Math.pow()方法计算每个位数字的立方值。
4. 将三个立方值相加,与原始数进行比较。
5. 如果三个立方值的和等于原始数,将该数输出,即为一个水仙花数。
6. 完成循环后,所有的水仙花数都将被找到并输出。
以下是Java代码示例:
public class NarcissisticNumber {
public static void main(String[] args) {
for (int i = 100; i <= 999; i++) {
int digit1 = i / 100;
int digit2 = (i / 10) % 10;
int digit3 = i % 10;
int sum = (int) (Math.pow(digit1, 3) + Math.pow(digit2, 3) + Math.pow(digit3, 3));
if (sum == i) {
System.out.println(i);
}
}
}
}
以上代码将输出所有的水仙花数,即153、370、371和407。
### 回答3:
水仙花数,也称为自恋数、阿姆斯特朗数,是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如,153是一个水仙花数,因为1³ + 5³ + 3³ = 153。
以下是用Java编写求水仙花数的算法:
```java
public class NarcissisticNumber {
public static void main(String[] args) {
int start = 100; // 水仙花数的起始值
int end = 999; // 水仙花数的结束值
findNarcissisticNumbers(start, end);
}
/**
* 求出指定范围内的水仙花数
* @param start 水仙花数的起始值
* @param end 水仙花数的结束值
*/
public static void findNarcissisticNumbers(int start, int end) {
for (int number = start; number <= end; number++) {
if (isNarcissisticNumber(number)) {
System.out.println(number);
}
}
}
/**
* 判断一个数是否为水仙花数
* @param number 待判断的数
* @return 水仙花数返回true,否则返回false
*/
public static boolean isNarcissisticNumber(int number) {
int n = String.valueOf(number).length(); // 求出位数n的值
int sum = 0;
for (int i = number; i > 0; i /= 10) {
int digit = i % 10; // 获取当前位的数字
sum += Math.pow(digit, n); // 按照要求进行n次幂求和
}
return sum == number;
}
}
```
以上代码通过一个循环遍历指定范围内的所有数,依次判断每个数是否为水仙花数。判断的方法是将每个数拆解为位数,然后按要求进行n次幂求和,最后与原数进行比较。如果求和结果与原数相等,则说明该数是水仙花数,将其输出。
用Java写一个求水仙花数的程序
好的,这是一个求水仙花数的Java程序:
```
public class NarcissisticNumber {
public static void main(String[] args) {
for (int i = 100; i < 1000; i++) {
int hundred = i / 100;
int ten = (i / 10) % 10;
int unit = i % 10;
if (i == hundred * hundred * hundred + ten * ten * ten + unit * unit * unit) {
System.out.println(i);
}
}
}
}
```
这个程序会在 100 到 1000 之间枚举所有的三位数,然后判断它是否为水仙花数。如果是,就将其输出。
该程序的思路是:
1. 循环枚举三位数
2. 将三位数的百位、十位、个位分别提取出来
3. 将百位的数字的立方相加,再加上十位的数字的立方,最后加上个位的数字的立方,判断是否等于原数
4. 如果相等,则输出该数
希望这个程序能帮到你!
相关推荐
![text/x-java](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)