Dari Wikipedia:
Kompleksitas dari algoritma ini adalah
O(n(logn)(loglogn))
operasi bit.
Bagaimana Anda sampai pada hal itu?
Bahwa kompleksitas termasuk loglogn
istilah memberitahu saya bahwa ada suatu sqrt(n)
tempat.
Misalkan saya menjalankan saringan pada 100 angka pertama ( n = 100
), dengan asumsi bahwa menandai angka sebagai komposit membutuhkan waktu konstan (implementasi array), berapa kali yang kita gunakan mark_composite()
akan menjadi seperti
n/2 + n/3 + n/5 + n/7 + ... + n/97 = O(n^2)
Dan untuk menemukan bilangan prima berikutnya (misalnya melompat ke 7
setelah mencoret semua bilangan yang merupakan kelipatannya 5
), banyaknya operasinya adalah O(n)
.
Jadi, kerumitannya pasti O(n^3)
. Apa kamu setuju?