数学规则表明我的“程序”给出了错误的答案。
如果您能查看这小段代码并告诉我它的问题,我将非常感激。我知道问题出现在行ll = []
之后的某个地方。我无法确切地指出它的确切原因。但我知道小于n的所有素数的对数之和小于n 。我的程序违反了这条规则。
以下是代码:
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`
答案 0 :(得分:6)
您的第二个列表不仅包含素数日志,还包含2和lp[500]
之间所有整数的日志。
答案 1 :(得分:1)
这是错误的:
for i in range(2, lp[500]): ## Gives all numbers from 2 to lp[500]
if i < 3581:
i = log(i, ) ## this changes i which is your loop variable!
ll.append(i)
应该是:
for i in range(501): ## from 0 to 500
ll.append( log(lp[i],) )
答案 2 :(得分:1)
你的范围表达
for i in range(2, lp[500]):
扩展为lp
(不包括)的2到500个元素的所有数字。
使用
for i in lp:
应该产生正确的结果。
答案 3 :(得分:0)
我认为i=log(i,)
将使用自然对数(e),您可能对log10(i)
感兴趣(log = 10)。
见http://docs.python.org/library/math.html第9.2.2节
答案 4 :(得分:0)
Build in doc说:
>>> from math import log
>>> log?
Type: builtin_function_or_method
Base Class: <type 'builtin_function_or_method'>
String Form:<built-in function log>
Namespace: Interactive
Docstring:
log(x[, base])
Return the logarithm of x to the given base.
If the base not specified, returns the natural logarithm (base e) of x.