编写一个程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数,水仙花数是:如果一个三位数的个位数、十位数、百位数的立方和等于该数自身,就称他为水仙花数)
时间: 2024-11-09 08:24:56 浏览: 8
当然可以。编写一个简单的Python程序来解决这个问题:
```python
def is_armstrong_number(num):
# 将数字转换为字符串并获取每一位
str_num = str(num)
len_num = len(str_num)
# 计算每一位数字的立方和
sum_of_cubes = sum(int(digit) ** len_num for digit in str_num)
# 如果和等于原数本身,则是水仙花数
return num == sum_of_cubes
def find_water_lilies(start, end):
water_lilies = []
for i in range(start, end + 1):
if is_armstrong_number(i):
water_lilies.append(i)
return water_lilies
# 输入范围
N = int(input("请输入一个正整数 N (100 <= N <= 999): "))
water_lilies = find_water_lilies(100, N)
print(f"在100到{N}之间,所有的水仙花数有:{water_lilies}")
相关问题
编写一个程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数。
好的,我可以回答这个问题。以下是程序的代码:
#include <stdio.h>
#include <math.h>
int main()
{
int n, i, j, k, sum;
printf("请输入一个正整数N(N大于等于100小于等于999):");
scanf("%d", &n);
printf("100~%d之间的所有水仙花数为:\n", n);
for (i = 1; i <= n; i++)
{
j = i / 100; //百位
k = (i / 10) % 10; //十位
sum = pow(j, 3) + pow(k, 3) + pow(i % 10, 3); //个位
if (sum == i)
{
printf("%d ", i);
}
}
printf("\n");
return ;
}
希望能对您有所帮助。
用Java编写一个程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数。
好的,我可以回答这个问题。以下是Java程序的代码:
import java.util.Scanner;
public class NarcissisticNumber {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一个正整数N(N大于等于100小于等于999): ");
int n = input.nextInt();
System.out.println("100~" + n + "之间的所有水仙花数为:");
for (int i = 100; i <= n; 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.print(i + " ");
}
}
}
}
阅读全文