小编5u2*_*2ie的帖子

N == N的数字和的某些幂(运行太慢)

我正在尝试编写一个Python脚本,找到所有整数(N),其中N的数字之和的某个幂等于N.例如,N = 81符合条件,因为8 + 1 = 9,并且a某个9的幂(即2)= 81.

我选择的范围是任意的.我的脚本有效,但非常非常慢.理想情况下,我想在大约6000ms内找到前30个这样的整数.

我的第一个解答:

def powerOfSum1():
    listOfN = []
    arange = [a for a in range(11, 1000000)] #range of potential Ns
    prange = [a for a in range(2, 6)] # a range for the powers to calculate
    for num in arange:
        sumOfDigits = sum(map(int, str(num)))
        powersOfSum = [sumOfDigits**p for p in prange]
        if num in powersOfSum:
            listOfN.append(num)
    return listOfN
Run Code Online (Sandbox Code Playgroud)

在我的第二个解决方案中,我尝试为每个sumOfDigits存储所有权限,但这并没有提高性能.

def powerOfSum2():
    listOfN = []
    powers= {}
    for num in range(11, 1000000):
        sumOfDigits = …
Run Code Online (Sandbox Code Playgroud)

python algorithm performance sum-of-digits

9
推荐指数
1
解决办法
1292
查看次数

标签 统计

algorithm ×1

performance ×1

python ×1

sum-of-digits ×1