首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个Sage程序不能正常工作( Euler 23项目)?

为什么这个Sage程序不能正常工作( Euler 23项目)?
EN

Stack Overflow用户
提问于 2014-10-02 18:46:30
回答 1查看 179关注 0票数 0

这是我对Euler项目的问题23的解决方案,它是:

“完美数是指它的适当除数之和与该数完全相等的一个数,例如,28的适当除数之和为1+2+4+7+ 14 = 28,这意味着28是一个完全数。

如果一个数n的适当除数之和小于n,则称为亏,如果这个数大于n,则称它为富足数。

由于12是最小的富足数,1+2+3+4+6= 16,可以写成两个富足数之和的最小数是24。通过数学分析,可以证明所有大于28123的整数都可以写成两个丰富数的和。然而,这个上限不能通过分析进一步降低,即使已知不能表示为两个丰富数之和的最大数小于这个极限。

求出所有正整数的和,这些正整数不能写成两个富足数的和。“

我写了这段代码,但出于某种原因,它给了我4190404,根据Project网站的说法是不正确的。

代码语言:javascript
复制
import numpy

def lowfactor(n):
    factors = [i for i in xrange(2, ceil(sqrt(n))) if n % i == 0]

    return list(numpy.unique(factors))

def factor(n):
    low = lowfactor(n)
    factors = [n / i for i in low]
    factors.reverse()
    factors = factors + low

    return factors

def isAbundant(n):
    factors = factor(n)
    factorSum = sum(factors)

    return factorSum > n

abundants = [i for i in xrange(28124) if isAbundant(i)]

sums = map(lambda n: False, range(28124))

for a in xrange(0, len(abundants)):
    for b in xrange(a, len(abundants)):
        if (abundants[a] + abundants[b]) < 28124:
            sums[abundants[a] + abundants[b]] = True

notsums = []
for i in xrange(28124):
    if not sums[i]:
        notsums.append(i)

sumofnotsums = sum(notsums)

print(sumofnotsums)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-02 23:14:36

如果你计算因子(28),并将你的结果与欧拉给出的答案进行比较,你就会看到这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26167481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档