Java:
public void getArmstrongNum(int numMax){
System.out.print("小于"+numMax+"的Armstrong数:\r\n");
int num = 0;
while(num<numMax) {
String numString = num+"";
int i = 0;
int resultEx = 0;
while(i<numString.length()) {
int numChar = Integer.parseInt(String.valueOf(numString.charAt(i)));
resultEx += Math.pow(numChar,numString.length());
i++;
}
if(resultEx == num ){
System.out.print(num+"是Armstrong数\r\n");
}
num++;
}
}
python:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import time; # 引入time模块
# Python 找出小于用户输入的数字中的阿姆斯特朗数
# 获取用户输入的数字
inputNum = int(input("请输入一个数字: "))
ticks1 = time.time()
num = 0
while num < inputNum:
# 初始化变量 sum
sum = 0
# 指数
n = len(str(num))
# 检测
temp = num
while temp > 0:
digit = temp % 10
sum += digit ** n
temp //= 10
# 输出结果
if num == sum:
print(num,"是阿姆斯特朗数")
num+=1
#else:
#print(num,"不是阿姆斯特朗数")
ticks2 = time.time()
timeUsed = ticks2 - ticks1;
print("找出小于{0}的阿姆斯特朗数用时{1}".format(inputNum,timeUsed))
结果:
java 小于1000000的armstrong数 用时 904ms
python 计算出小于1000000的armstrong数 用时 3.9s
java 小于10000000的armstrong数 用时 8s277ms
python小于10000000的armstrong数 用时 46s