Từ Wikipedia:
Độ phức tạp của thuật toán là các phép toán
O(n(logn)(loglogn))
bit.
Làm thế nào để bạn đến đó?
Rằng sự phức tạp bao gồm loglogn
thuật ngữ nói với tôi rằng có một sqrt(n)
nơi nào đó.
Giả sử tôi đang chạy sàng trên 100 số đầu tiên ( n = 100
), giả sử rằng việc đánh dấu các số dưới dạng hỗn hợp cần thời gian không đổi (triển khai mảng), số lần chúng tôi sử dụng mark_composite()
sẽ giống như
n/2 + n/3 + n/5 + n/7 + ... + n/97 = O(n^2)
Và để tìm số nguyên tố tiếp theo (ví dụ để chuyển đến 7
sau khi gạch bỏ tất cả các số là bội của 5
), số phép toán sẽ là O(n)
.
Vì vậy, sự phức tạp sẽ là O(n^3)
. Bạn có đồng ý không?