複雜度計算

2021-06-20 08:59:24 字數 767 閱讀 1128

在1~n

中,能被

2整除的有

n/2個,能被

3整除的有

n/3個,……

則該演算法的複雜度可這樣計算:

o(n)=n/2×

1+n/3

×2+n/5

×3+n/7×4+

…… //即o(n)~n

×φ(n)

考慮到6這個數,它既是2的倍數,也是3倍數,

因此還要用到容斥原理。

//設能被第

i個素數整除的正整數的集合為ai。

對於特定的乙個整數k

,該演算法一定是在取得其最小的素因數,或者其本身是個素數時

break

出第二層迴圈。

對於6這個例子,我們要把他當有

3這個因子的情況去掉。

考慮30

,他的質因數有2,

3,5,我們需要減去3,

5這兩種情況。

注:我們在計算(2,3

)這一組時,對

30減去

3這種情況,(2,

5)這一組減去

5這種情況,(3,

5)又減了一次

5這種情況,因此要加(2,

3,5)這一組的計算結果。只能說類似容斥原理。

不妨設cnt=

φ(n)

pi為第i個素數

因此由容斥原理可得:

計算複雜度

求極限 n 無窮大 表示式n 無窮大 表示式1 n 0 2n2 2n3 n n 3 2 n 2 1 n 2 n 無窮大的時候 2 n 0 1 n 2 0 2 常數 此演算法的時間複雜度是n 3 時間複雜度的概念 執行的次數和同數量級 n最高次方數 取商是常數 那麼同數量級就是這個演算法的時間複雜度 ...

計算時間複雜度與空間複雜度

如何衡量乙個演算法的好壞?複雜度 空間複雜度 時間複雜度 事後統計法 就是在演算法的程式執行結束後,根據實際執行結果衡量演算法好壞 事前估計法 就是在程式執行之前,先按照程式 來預估演算法的好壞 時間複雜度 用基本指令的執行次數而不是執行時間代表時間複雜度,同乙個程式在不同配置的機器下的執行時間不一...

時間複雜度和空間複雜度計算

時間複雜度 首先要說的是,時間複雜度的計算並不是計算程式具體執行的時間,而是演算法執行語句的次數。當我們面前有多個演算法時,我們可以通過計算時間複雜度,判斷出哪乙個演算法在具體執行時花費時間最多和最少。常見的時間複雜度有 常數階o 1 對數階o log2 n 線性階o n 線性對數階o n log2...