|
发表于 2017-7-16 21:45:26
|
显示全部楼层
本帖最后由 达锅 于 2017-7-22 22:43 编辑
抢沙发,暴力破解
- import time as t#直接就想到了求质素的筛法,但是速度太慢,至少1分钟
- tt=t.time()
- n=1+10**6
- li=[0 for i in range(n)]
- li[1]=-1
- for i in range(2,n):#n的倍数往后加1
- for j in range(i,n-1,i):
- li[j]+=1
- print(sum(1 for i in range(2,n-1) if li[i]==li[i-1]))
- print(t.time()-tt)
复制代码
换数组
- import time as t#直接就想到了求质素的筛法~
- import numpy as np
- tt=t.time()
- n=1+10**7
- ar=(np.ones(n))
- ar[1]=0
- for i in np.arange(2,n//2+1):
- ar[i:n:i]+=1
- #b=ar[1:]
- #c=ar[:-1]
- #d=np.where((b+c)/2-b==0)
- #print(len(d[0]))
- print(len(np.where((ar[1:]+ar[:-1])/2-ar[1:]==0)[0]))
- print(t.time()-tt)
复制代码
那也要20秒……
- 986262
- 19.424811840057373
复制代码
|
|