python 求3到8位数的水仙花数花费时间

import time
#获取3位数的水仙花数
start1 = time.time()
start = time.time()

numbers = []
for i in range(100,1000):
    g = i %10
    s = i // 10 % 10
    b = i // 100
    if ((g ** 3) + (s ** 3) + (b ** 3) ) == i :
        numbers.append(i)

for j in numbers:
    print("3位数中水仙花数有 %d"%(j))

end = time.time()
take = end - start
print("计算3位数中的水仙花数花费时间 %d 秒"%(take))

# 四位的四叶玫瑰数共有3个:1634,8208,9474;
numbers = []

for i in range(1000,10000):
    g = i % 10
    s = i // 10 % 10
    b = i // 100 % 10
    q = i // 1000

    if ((g ** 4) + (s ** 4) + (b ** 4) + (q ** 4)) == i :
        numbers.append(i)

for j in numbers:
    print("4位数中四叶玫瑰数有 %d"%(j))

# 五位的五角星数共有3个:54748,92727,93084;

numbers = []
for i in range(10000,100000):
    g = i % 10
    s = i // 10 % 10
    b = i // 100 % 10
    q = i // 1000 % 10
    w = i // 10000

    if ((g ** 5) + (s ** 5) + (b ** 5) + (q ** 5) + (w ** 5)) == i :
        numbers.append(i)

for j in numbers:
    print("五位的五角星数共有 %d"%(j))

# 六位的六合数只有1个:548834;

numbers = []
for i in range(100000,1000000):
    g = i % 10
    s = i // 10 % 10
    b = i // 100 % 10
    q = i // 1000 % 10
    w = i // 10000 % 10
    y = i // 100000

    if ((g ** 6) + (s ** 6) + (b ** 6) + (q ** 6) + (w ** 6) + (y ** 6)) == i :
        numbers.append(i)

for j in numbers:
    print("六位的六合数共有 %d"%(j))

# 七位的北斗七星数共有4个:1741725,4210818,9800817,9926315;

start = time.time()
numbers = []
for i in range(1000000,10000000):
    g = i % 10
    s = i // 10 % 10
    b = i // 100 % 10
    q = i // 1000 % 10
    w = i // 10000 % 10
    y = i // 100000 % 10
    sy = i // 1000000

    if ((g ** 7) + (s ** 7) + (b ** 7) + (q ** 7) + (w ** 7) + (y ** 7) + (sy ** 7)) == i :
        numbers.append(i)

for j in numbers:
    print("七位的北斗七星数共有 %d"%(j))

end = time.time()
take = end - start
print("七位的北斗七星数花费时间 %d 秒"%(take))

# 八位的八仙花数共有3个:24678050,24678051,88593477
start = time.time()
numbers = []
for i in range(10000000,100000000):
    g = i % 10
    s = i // 10 % 10
    b = i // 100 % 10
    q = i // 1000 % 10
    w = i // 10000 % 10
    y = i // 100000 % 10
    sy = i // 1000000 % 10
    by = i // 10000000

    if ((g ** 8) + (s ** 8) + (b ** 8) + (q ** 8) + (w ** 8) + (y ** 8) + (sy ** 8) + (by ** 8)) == i :
        numbers.append(i)

for j in numbers:
    print("八位的八仙花数共有 %d"%(j))

end = time.time()
take = end - start
print("八位的八仙花数花费时间 %d 秒"%(take))

end1 = time.time()
take1 = end1 - start1
print("计算3位数到8位数的水仙花数共花费时间 %d"%(take1))

#
# 八位的八仙花数共有 24678050
# 八位的八仙花数共有 24678051
# 八位的八仙花数共有 88593477
# 八位的八仙花数花费时间 311 秒


运行结果:

3位数中水仙花数有 153
3位数中水仙花数有 370
3位数中水仙花数有 371
3位数中水仙花数有 407
计算3位数中的水仙花数花费时间 0 秒
4位数中四叶玫瑰数有 1634
4位数中四叶玫瑰数有 8208
4位数中四叶玫瑰数有 9474
五位的五角星数共有 54748
五位的五角星数共有 92727
五位的五角星数共有 93084
六位的六合数共有 548834
七位的北斗七星数共有 1741725
七位的北斗七星数共有 4210818
七位的北斗七星数共有 9800817
七位的北斗七星数共有 9926315
七位的北斗七星数花费时间 27 秒
八位的八仙花数共有 24678050
八位的八仙花数共有 24678051
八位的八仙花数共有 88593477
八位的八仙花数花费时间 297 秒
计算3位数到8位数的水仙花数共花费时间 327

CPU :21% 内存 %42 

 

posted @ 2018-02-19 16:21  马鞍山  阅读(984)  评论(0编辑  收藏  举报