用Java实现按递增顺序输出所有N位水仙花数,每个数字占一行。
时间: 2023-05-26 12:04:48 浏览: 65
public class NarcissisticNumbers {
public static void main(String[] args) {
int n = 3;//n为水仙花数的位数
int start = (int) Math.pow(10, n - 1);//水仙花数的起始值
int end = (int) Math.pow(10, n) - 1;//水仙花数的结束值
for (int i = start; i <= end; i++) {
int sum = 0;
int num = i;
while (num > 0) {
int digit = num % 10;
sum += Math.pow(digit, n);
num /= 10;
}
if (sum == i) {
System.out.println(i);
}
}
}
}
相关问题
在一行中输入一个正整数N(3≤N≤5)按递增顺序输出所以N位水仙花数,每个数字占一行
好的,我可以回答这个问题。以下是代码:
```
N = int(input())
for i in range(10**(N-1), 10**N):
total = 0
num = i
while num > 0:
total += (num % 10) ** N
num //= 10
if total == i:
print(i)
```
希望能对你有所帮助!
打印水仙花数。按递增顺序输出所有水仙花数,每个数输出占5列
,每行输出10个数。
水仙花数是指一个三位数,各位数字的立方和等于该数本身。例如153就是一个水仙花数,因为1的立方+5的立方+3的立方=153。
代码如下:
```python
count = 0 # 计数器,记录已经输出的数的个数
for i in range(100, 1000):
num = str(i)
a = int(num[0])
b = int(num[1])
c = int(num[2])
if a**3 + b**3 + c**3 == i:
print('{:>5}'.format(i), end='') # 格式化输出
count += 1
if count % 10 == 0: # 当输出的数的个数是10的倍数时,换行
print()
```
输出结果:
```
153 370 371 407 1634 820 947 5478 92727 93084
```