Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Nên sử dụng hàm sqrt() hay **0.5 để có được tốc độ tốt nhất

21:31 01-08-2023 1.440 lượt xem 5 bình luận 23:00 19-08-2023
def is_prime(n):
    if n == 2:
        return True
    if n < 2 or not n % 2:
        return False
    is_prime = True
    for k in range(3,ceil(n**0.5)+1,2):
        if not n % k:
            is_prime = False
            break
    return is_prime 

Khi muốn tính căn bận 2 của số n thì nên dùng hàm math.sqrt(2) hay n**0.5 để có được tốc độ cũng như độ chính xác cao nhất.

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
FoxCode đã bình luận 19:49 04-08-2023

Sau khi hỏi thử Google Bard thì tôi đã tìm được câu trả lời:

 

Cả sqrt()**0.5 đều có thể được sử dụng để tính căn bậc hai trong Python. Cả hai đều hoạt động theo cách tương tự, nhưng có một số khác biệt nhỏ.

sqrt() là một hàm được định nghĩa trong thư viện math. Nó được viết bằng C và do đó thường nhanh hơn **0.5. Tuy nhiên, sqrt() cũng phức tạp hơn và do đó có thể sử dụng nhiều bộ nhớ hơn.

**0.5 là một toán tử. Nó được viết bằng Python và do đó thường chậm hơn sqrt(). Tuy nhiên, **0.5 cũng đơn giản hơn và do đó sử dụng ít bộ nhớ hơn.

Cuối cùng, hàm nào tốt hơn để sử dụng phụ thuộc vào nhu cầu cụ thể của bạn. Nếu bạn cần tính căn bậc hai của một số số lớn và tốc độ là quan trọng, thì sqrt() là lựa chọn tốt hơn. Nếu bạn cần tính căn bậc hai của một số số nhỏ và bộ nhớ là quan trọng, thì **0.5 là lựa chọn tốt hơn.

=>Kết luận: sqrt() tốn nhiều bộ nhớ nhưng nhanh hơn. Còn **0.5 tốn ít bộ nhớ nhưng chậm hơn. Vậy nếu muốn nhanh cứ chọn sqrt().

Vo Tan Duc đã bình luận 12:52 03-08-2023

Mình nghĩ là nên dùng n**0.5 tốc độ cao hơn math.sqrt(2) tại vì hàm sqrt sẽ được gọi trong thư viện Math => chậm hơn

Câu hỏi mới nhất