你上面写的水仙花算法正确吗
时间: 2023-03-21 19:03:16 浏览: 46
水仙花算法是一个常见的算法,用于判断一个三位数是否为水仙花数。如果一个三位数每个数字的立方和等于该数字本身,则这个数就是水仙花数。比如153就是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
经过检查,我可以确认水仙花算法的实现是正确的。
相关问题
水仙花算法
水仙花算法(Narcissistic Number Algorithm)是一种常见的数字运算算法,用于寻找所有的“水仙花数”(Narcissistic Number)。
所谓水仙花数,是指一个三位数,其各位数字的立方和等于该数本身。例如,153就是一个水仙花数,因为1的立方加上5的立方加上3的立方等于153。
水仙花算法的基本思路是遍历所有的三位数,对于每个数,分解出它的各个数字,计算各个数字的立方和,然后与该数本身进行比较,如果相等,则该数是一个水仙花数,将其输出即可。
下面是一个使用Python语言实现的水仙花算法的示例代码:
```
for i in range(100, 1000):
# 分解出i的各个数字
a = i // 100
b = (i // 10) % 10
c = i % 10
# 计算各个数字的立方和
s = a**3 + b**3 + c**3
# 如果立方和等于i本身,则输出i
if s == i:
print(i)
```
该代码会输出所有的三位水仙花数,即153、370、371和407。
用Java写出水仙花数算法
水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如153就是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。以下是用Java实现水仙花数算法的代码:
```java
public class NarcissisticNumber {
public static void main(String[] args) {
for (int i = 100; i <= 999; i++) {
int a = i / 100;
int b = (i / 10) % 10;
int c = i % 10;
if (a * a * a + b * b * b + c * c * c == i) {
System.out.println(i + "是水仙花数");
}
}
}
}
```
该代码使用for循环遍历所有三位数,分别将百位、十位和个位数字提取出来,并判断它们的立方和是否等于原数。如果等于,则输出该数是水仙花数。
相关推荐
![](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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)