수학 규칙은 "프로그램"이 잘못된 답을 제공함을 보여줍니다.프로그램 소수의 로그 계산
이 작은 코드를 확인하고 문제를 알려 주시면 매우 감사드립니다. 나는 문제가 라인 ll = []
이후 어딘가에 있다는 것을 안다. 나는 그 정확한 원인을 정확하게 지적 할 수 없다. 그러나 나는 이 n보다 작은 모든 소수의 로그의 합이 n보다 작다는 것을 알고 있습니다. 내 프로그램이이 규칙을 위반합니다. 내가 i=log(i,)
당신이 (= 기본 10 로그) log10(i)
에 관심이있을 수있는 자연 로그 (e)를 사용합니다 생각
from math import log
lp = [] ## create a list
for n in range(2,10000):
for x in range(2,n):
if n % x == 0:
break
else:
lp.append(n) ## fill that list with the primes
##print lp[500] found the value of lp[500]
ll = [] ## create a second list
for i in range(2, lp[500]):
if i < 3581: ## this is the number corresponding to lp[500]
i = log(i,)
ll.append(i) ## fill the second list with logs of primes
print sum (ll), 3581, sum(ll)/3581`
소수 10000까지 계산하는 데 얼마나 걸리나요? 하나의 하프 라인 변경으로 0.11 초로 계산할 수 있습니다. 그냥'for x in range (2, n) :'을'for x in lp :'로 변경하십시오. 다른 크기로 빨리 가고 싶다면 n의 제곱근에서 멈추십시오. 구현하기 전에이 두 가지 작은 변화를 이해하십시오. https://gist.github.com/1347515 (3 번째 변경, 2로 설정된 단계는 그다지 추가하지 않음)와 같이 조금 더 최적화 된 동일한 알고리즘입니다. – rplnt