如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5^3 + 3^3 = 153。请编写程序,检测用户输入的数字是否为阿姆斯特朗数。
时间: 2023-05-30 16:05:18 浏览: 129
以下是Python实现:
num = input("请输入一个正整数:")
n = len(num)
total = 0
for i in num:
total += int(i)**n
if total == int(num):
print(num, "是阿姆斯特朗数")
else:
print(num, "不是阿姆斯特朗数")
首先,读取用户输入的正整数,使用len()函数获取其位数n。然后遍历该数的每一位数字,将其的n次方加起来,得到total。最后判断total是否等于原数,如果相等,则输出该数是阿姆斯特朗数,否则输出不是。
相关问题
题目:如果一个n位正整数等于其各位数字的n次方之 和,则称该数为阿姆斯特朗数。 根据描述补充fun函数,其功能为检测用户输入的数字是否为阿姆斯特朗数 例如: 1^3 + 5^3 + 3^3 = 153。则153是阿姆斯特朗数
好的,根据您的要求,我来补充 fun 函数,实现判断一个数是否是阿姆斯特朗数的功能。以下是代码实现:
```python
def fun(num):
# 先计算出num是几位数
n = len(str(num))
# 初始化sum为0
sum = 0
# 循环处理每一位数字
for i in str(num):
# 将每一位数字的n次方加入sum中
sum += int(i) ** n
# 判断sum是否等于num,是则为阿姆斯特朗数,否则不是
if sum == num:
return True
else:
return False
```
您可以将一个数字传入该函数,函数将返回 True 或者 False,表示该数字是否为阿姆斯特朗数。例如,传入 153,该函数将返回 True,因为 1^3 + 5^3 + 3^3 = 153。
java代码求1000以内的所有的阿姆斯特朗数。 (如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。例如:153=1^3+5^3+3^3 7=7^1 407=4^3+0^3+7^3)
好的,下面是Java代码,可以求出1000以内的所有阿姆斯特朗数:
```java
public class ArmstrongNumbers {
public static void main(String[] args) {
for (int i=1; i<=1000; i++) {
if (isArmstrong(i)) {
System.out.println(i);
}
}
}
public static boolean isArmstrong(int num) {
int sum = 0;
int originalNum = num;
int numDigits = String.valueOf(num).length();
while (num > 0) {
int digit = num % 10;
sum += Math.pow(digit, numDigits);
num /= 10;
}
return sum == originalNum;
}
}
```
代码中,我们先遍历1到1000之间的所有正整数,然后对于每个数字,调用isArmstrong()方法判断它是否为阿姆斯特朗数。isArmstrong()方法中,我们首先记录下原始的数字,然后计算该数字的位数。接着,我们通过循环每次获取该数字的最后一位,计算它的n次方,并将结果加到sum变量中。最后,我们判断sum是否等于原始的数字,如果是,则该数字是阿姆斯特朗数,返回true,否则返回false。
阅读全文