if n<=2:
return []
result=[False,False]+[True]*(n-2)
for i in range(len(result)):
if result[i]==True:
for j in range(2*i,len(result),i):
result[j]=False
return [i for i in range(len(result)) if result[i]==True]
def bi_search(prime,primelist,start,end):
if start>end :
return -1
mid=(start+end)//2
if primelist[mid]==prime:
return mid
elif primelist[mid]>prime:
end=mid-1
else:
start=mid+1
return bi_search(prime,primelist,start,end)
if __name__=='__main__':
n=int(raw_input())
primelist=prime(n)
num=raw_input()
while num:
num=int(num)
index=bi_search(num,primelist,0,len(primelist)-1)
print(index)
num=raw_input()
Python 是一门适合做数据挖掘的语言python强调程序员的生产力,让你把精力集中在逻辑上而不是语言本身上。
你能想象用一下午时间实现从0开始一个简单的搜索引擎吗?C++显然是不行的。。你的大部分时间都将花在实现基本数据结构和调试语言错误上。。而用python,你要做的就是真正理解搜索算法,之后的实现真的很简单。。
我觉得用python很适合算法研究,不仅仅是数据挖掘。快速开发能让你迅速验证你的想法,而不是把时间浪费在程序本身上(想象一下你写了一星期的c++,调了一大堆指针错误,最后发现想法本身就有错误。。)当你知道你已经有了一个正确的算法,要使他运行速度提高只需用c++等重写性能瓶颈并嵌入就行了。。