调用自编函数实现,求出小于1000的所有水仙花数(所谓水仙花数是指一个三位正整数,其各位数字的立方和等于该数本身
时间: 2024-05-29 11:09:21 浏览: 58
的数)。
好的,我明白了。以下是代码实现:
def narcissistic_number():
for num in range(100, 1000):
temp = num
sum = 0
while temp > 0:
digit = temp % 10
sum += digit ** 3
temp //= 10
if num == sum:
print(num, end=" ")
narcissistic_number()
这段代码会输出所有小于1000的水仙花数,即153、370和371。
相关问题
三位的水仙花数: 输入一个三位的正整数n, 输出100~n范围内所有的水仙花数。 用函数判断一个整数是不是水仙花数,是返回1,不是返回0。 主函数调用该函数,实现输出100~n之间的所有水仙花数。 三位的水仙花数是指,该数的三个数字立方之和等于该数本身。
#include <stdio.h>
int isNarcissistic(int n) { // 判断是否为水仙花数
int a = n / 100; // 百位数
int b = n / 10 % 10; // 十位数
int c = n % 10; // 个位数
if (a*a*a + b*b*b + c*c*c == n) { // 判断是否符合条件
return 1; // 是水仙花数,返回1
} else {
return 0; // 不是水仙花数,返回0
}
}
int main() {
int n;
printf("请输入一个三位正整数n:");
scanf("%d", &n);
printf("100~%d范围内的水仙花数有:\n", n);
for (int i = 100; i <= n; i++) { // 遍历100~n的数
if (isNarcissistic(i)) { // 判断是否为水仙花数
printf("%d ", i); // 输出水仙花数
}
}
printf("\n");
return 0;
}
三位的水仙花数: 输入一个三位的正整数n, 输出100~n范围内所有的水仙花数。 用函数判断一个整数是不是水仙花数,是返回1,不是返回0。 主函数调用该函数,实现输出100~n之间的所有水仙花数。 三位的水仙花数是指,该数的三个数字立方之和等于该数本身。
你可以通过以下C++代码来实现找出100到n范围内的所有水仙花数。这个函数`isWaterLily(int num)`用于判断一个整数是否是水仙花数,而`findWaterLilies(int m, int n)`则遍历指定范围并打印所有符合条件的数。
```cpp
#include <iostream>
// 判断一个数是否是水仙花数
int isWaterLily(int num) {
if (num < 100 || num > 999) return 0; // 只考虑三位数
int digits[3];
int sum = 0;
int temp = num;
while (temp != 0) {
digits[sum++] = temp % 10;
temp /= 10;
}
for (int i = 0; i < 3; ++i) {
sum -= 1; // 因为之前加了一次,这里减回去
if (digits[i] * digits[i] * digits[i] != sum) {
return 0;
}
}
return 1;
}
// 找出并输出100到n范围内的水仙花数
void findWaterLilies(int m, int n) {
for (int i = m; i <= n; ++i) {
if (isWaterLily(i)) {
std::cout << i << " ";
}
}
std::cout << std::endl;
}
int main() {
int start = 100;
int end = 500; // 示例范围,可根据需求修改
findWaterLilies(start, end);
return 0;
}
```
运行此程序时,将输出100到给定范围(这里是100到500)内所有的水仙花数。
阅读全文