- 註冊時間
- 2022-5-9
- 最後登錄
- 2024-9-24
- 主題
- 查看
- 積分
- 266
- 閱讀權限
- 50
- 文章
- 244
- 相冊
- 2
- 日誌
- 0
 
狀態︰
離線
|
本文最後由 Hhy1552 於 2022-11-5 15:41 編輯
關於lp(78155249)[-1]的計算:
嗯。昨天,計算到晚上23點的時候,結果還沒有計算出來。我在昨天23點(或左右)的時候把計算停了。
如果要再計算,就得從頭算起。
昨天的計算,是從大約14點15分,到23點00分。結果沒有出來。不過就用了8小時45分鐘左右的計算時間。
然後,今天,做了一些時間測量,我才知道,在一開始的那些數量級別(當k=1000、10000、100000),k每上升10倍,lp(k)的計算時間會上升大約28倍。
78155249是接近10的8次方。
從今天的測量得知,要計算lp(10000000),這是10的7次方,得用大約1777秒。
那估計:如果要計算到lp(100000000),這是10的8次方,得用1777秒的大約31倍。(比28倍大一些。)
1777秒的31倍,是大約15.3小時。
下面是今天的時間測量數據:
k=10 time=0.0(s) na
k=100 time=0.0(s) na
k=1000 time=0.003988742828369141(s) na
k=10000 time=0.08794498443603516(s) ratio= 22.048296473401077
k=100000 time=2.2129108905792236(s) ratio= 25.1624456445124
k=1000000 time=62.05074620246887(s) ratio= 28.040327546233573
k=10000000 time=1777.5864427089691(s) ratio= 28.64730162807039
上面這些數據,是用下面這套程序計算出來的:(總計算時間是30分鐘左右)- import math
- import time
- def lp(k):
- p=[0]*k
- s=0
- n=2
- while s<k:
- i=0
- while i<s and n%p[i]!=0:
- if p[i]*p[i]>n:
- i=s
- else:
- i+=1
- if i==s:
- p[s]=n
- s+=1
- n+=1
- return p
- m=7
- b=0
- for i in range(0,m):
- k=int(math.pow(10,i+1))
- a=time.time()
- lp(k)
- a=time.time()-a
- if b==0:
- print('k='+str(k),'time='+str(a)+'(s)','na')
- else:
- print('k='+str(k),'time='+str(a)+'(s)','ratio=',a/b)
- b=a
複製代碼 |
|