이것은 Project Euler의 23 번 문제에 대한 해결책입니다.왜이 Sage 프로그램이 제대로 작동하지 않습니까 (프로젝트 오일러 23)?
"완벽한 수는 해당 수의 합계가 정확하게 숫자와 같은 수입니다. 예를 들어, 적절한 수 28의 제수는 1 + 2 + 4 + 7 + 14 = 28이되어, 28이 완벽한 수임을 의미합니다. 이 합이 n을 초과하면 풍부하다고 불린다.
12는 가장 작은 숫자 인 1 + 2 + 3 + 4 + 6 = 16과 같이 두 개의 풍부한 숫자의 합으로 쓸 수있는 최소 숫자는 24이다. 수학적 분석 결과, 28123보다 큰 모든 정수는 두 개의 풍부한 수의 합으로 표시 될 수 있음을 알 수 있습니다. 그러나 두 개의 풍부한 숫자의 합으로 표현할 수없는 최대 수는이 제한보다 작다는 것을 알고 있더라도 분석을 통해이 상한을 더 이상 줄일 수 없습니다.
이 개 풍부한 숫자의 합으로 쓸 수없는 모든 양의 정수의 합을 찾습니다. "
이 코드를 작성했습니다,하지만 어떤 이유로이 프로젝트에 따라, 나에게있다 4190404
을 제공합니다 오일러 웹 사이트는 잘못되었습니다.
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)
예, 나는'약수를 사용하여 전환()' 기능을 제공하고 프로그램이 수정되었습니다. – Kytuzian