编写一个程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数。所谓 的水仙花数是:如果一个三位数的个位数、十位数、百位数的立方和等于该数自身,就称这个数为水仙花数。
时间: 2024-02-17 17:01:47 浏览: 73
没问题,这里再提供一种实现方法:
```python
N = int(input("请输入一个正整数N(N大于等于100小于等于999): "))
for num in range(100, N+1):
# 将数字转换成字符串,方便操作各个位上的数字
str_num = str(num)
a = int(str_num[0]) # 百位数
b = int(str_num[1]) # 十位数
c = int(str_num[2]) # 个位数
# 判断是否为水仙花数
if a**3 + b**3 + c**3 == num:
print(num)
```
和之前的方法类似,也是遍历100到N之间的所有整数,但这里将数字转换成字符串,然后使用字符串索引操作获取各个位上的数字。然后根据水仙花数的定义判断该数是否为水仙花数。如果是,就输出该数。
相关问题
编写一个程序,输入一个正整数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 + " ");
}
}
}
}
阅读全文