编写一个函数,用来判断一个三位数是否是水仙花数
时间: 2024-11-12 07:42:08 浏览: 30
水仙花数是指一个三位数,其各位数字立方之和等于该数本身。例如,153就是一个水仙花数,因为1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153。
你可以编写一个Python函数来验证这一点,首先将数字分解成百位、十位和个位,然后计算它们各自的立方并求和,最后比较这个总和是否与原数相等。以下是这样的函数实现:
```python
def is_lychrel_number(num):
digits = [int(digit) for digit in str(num)] # 将数字转换为列表
sum_of_cubes = sum([digit**3 for digit in digits]) # 计算每一位的立方和
n = num
for _ in range(10): # 验证10次,通常水仙花数最多需要这么多次尝试
n, sum_of_cubes = sum_of_cubes, n - sum_of_cubes
if n == sum_of_cubes and len(str(n)) == 3: # 水仙花数条件
return True
return False
# 测试
test_num = 153
print(is_lychrel_number(test_num)) # 输出:True
```
这个函数会先检查一个三位数是否满足水仙花条件,如果不,则继续迭代更新数字和立方和,直到达到最大尝试次数或找到水仙花数为止。
相关问题
C++编写一个函数,判断某一个数是否为水仙花数。(水仙花数:一个三位数的各位数字的立方和等于该数本身)
以下是C++代码实现:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
bool isNarcissisticNumber(int num) {
int sum = 0;
int temp = num;
while (temp != 0) {
int digit = temp % 10;
sum += pow(digit, 3);
temp /= 10;
}
return sum == num;
}
int main() {
int num;
cout << "请输入一个三位数: ";
cin >> num;
if (isNarcissisticNumber(num)) {
cout << num << "是水仙花数" << endl;
} else {
cout << num << "不是水仙花数" << endl;
}
return 0;
}
```
首先定义一个 `isNarcissisticNumber` 函数,接收一个整数参数 `num`,用于判断该数是否为水仙花数。在函数中,我们使用循环依次取出该数的每一位数字,计算各位数字的立方和,最后将计算结果与原数比较,如果相等则返回 `true`,否则返回 `false`。
在 `main` 函数中,我们首先从用户输入中获取一个三位数,然后调用 `isNarcissisticNumber` 函数进行判断,最后输出判断结果。
2.编写一个函数,判断某一个数是否为水仙花数。(水仙花数:一个三位数的各位数字的立方和等于该数本身)
好的,以下是用 Python 语言编写的判断一个数是否为水仙花数的函数:
```python
def is_narcissistic_number(num):
if not isinstance(num, int) or num < 100 or num > 999:
# 判断输入是否为一个三位数的整数
return False
# 分离出每一位数字
digits = [int(d) for d in str(num)]
# 计算立方和
sum_of_cubes = sum(digit**3 for digit in digits)
# 判断是否相等
return num == sum_of_cubes
```
你可以通过调用该函数,并传入一个数作为参数来判断这个数是否为水仙花数,比如:
```python
print(is_narcissistic_number(153)) # True
print(is_narcissistic_number(370)) # True
print(is_narcissistic_number(371)) # True
print(is_narcissistic_number(407)) # True
print(is_narcissistic_number(1634)) # True
print(is_narcissistic_number(8208)) # True
print(is_narcissistic_number(9474)) # True
print(is_narcissistic_number(100)) # False
print(is_narcissistic_number(999)) # False
print(is_narcissistic_number(123)) # False
print(is_narcissistic_number(555)) # False
```
阅读全文