水仙花算法
时间: 2023-07-10 19:10:47 浏览: 92
水仙花算法(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 boolean isNarcissistic(int number) {
if (number < 100 || number > 999) {
return false;
}
int sumOfCubes = 0;
String numString = String.valueOf(number);
for (int i = 0; i < numString.length(); i++) {
int digit = Character.getNumericValue(numString.charAt(i));
sumOfCubes += Math.pow(digit, 3);
}
return sumOfCubes == number;
}
public static void main(String[] args) {
int inputNum = 153;
System.out.println("Is " + inputNum + " a narcissistic number? " + isNarcissistic(inputNum));
}
}
```
在这个程序中,我们首先检查输入是否在合法范围内,然后将数字转换成字符串,遍历每个字符获取对应的数字并计算其立方,最后比较总和是否与原始数相等。
你上面写的水仙花算法正确吗
水仙花算法是一个常见的算法,用于判断一个三位数是否为水仙花数。如果一个三位数每个数字的立方和等于该数字本身,则这个数就是水仙花数。比如153就是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
经过检查,我可以确认水仙花算法的实现是正确的。
阅读全文