【问题描述】编写一个程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数。所谓 的水仙花数是:如果一个三位数的个位数、十位数、百位数的立方和等于该数自身,就称这个数为水仙花数。 【输入形式】输入一个正整数N。 【输出形式】输出从100到N之间的所有水仙花数,每个数以回车结束。 【样例输入】 400 【样例输出】 153 370 371 【样例说明】输入一个的正整数400,输出为100~400之间的水仙花数153,370,371
时间: 2023-08-24 12:03:59 浏览: 157
以下是该问题的一个 Python 实现:
```python
n = int(input())
for num in range(100, n+1):
# 分离出百位、十位和个位
hundreds = num // 100
tens = (num // 10) % 10
ones = num % 10
# 判断是否为水仙花数
if num == hundreds ** 3 + tens ** 3 + ones ** 3:
print(num)
```
该实现首先使用 `input()` 函数读取一个正整数 `n`。然后,使用 `range()` 函数生成 100 到 `n`(包括 `n`)之间的所有整数,并使用一个 `for` 循环依次遍历这些整数。对于每个整数,我们首先使用整数除法 `//` 分离出它的百位、十位和个位数字,分别赋值给变量 `hundreds`、`tens` 和 `ones`。然后,判断这个数是否为水仙花数,如果是,就使用 `print()` 函数输出它。
相关问题
编写一个程序,输入一个正整数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 + " ");
}
}
}
}
阅读全文