Tôi chỉ là người mới bắt đầu khoa học máy tính. Tôi đã học được điều gì đó về thời gian chạy nhưng tôi không thể chắc chắn những gì tôi hiểu là đúng. Vì vậy, hãy giúp tôi.tại sao hệ số nguyên là một thời gian không đa thức?
Vì vậy, việc tích lũy số nguyên hiện không phải là vấn đề thời gian đa thức nhưng thử nghiệm nguyên thủy là. Giả sử số cần kiểm tra là n. Nếu chúng ta chạy một chương trình chỉ để quyết định xem mỗi số từ 1 đến sqrt (n) có thể chia n, và nếu câu trả lời là có, sau đó lưu trữ số. Tôi nghĩ rằng chương trình này là thời gian đa thức, phải không?
Một cách có thể là tôi sai sẽ là một chương trình nhân tố hóa nên tìm tất cả các số nguyên tố, thay vì nguyên tố đầu tiên được phát hiện. Vì vậy, có lẽ đây là lý do tại sao.
Tuy nhiên, trong mật mã khóa công khai, việc tìm kiếm hệ số nguyên tố của một số lớn là điều cần thiết để tấn công mật mã. Vì thường là một số lượng lớn (khóa công khai) chỉ là sản phẩm của hai số nguyên tố, việc tìm kiếm một số nguyên tố có nghĩa là tìm ra số nguyên tố kia. Đây nên là thời gian đa thức. Vậy tại sao nó khó khăn hoặc không thể tấn công?
Điều đầu tiên bạn nói là kiểm tra xem số đó có phải là số nguyên tố hay không. – Emil
Bởi vì các con số là HUGE! – nullpotent
Nếu bạn tin rằng thuật toán X có độ phức tạp đa thức, hãy thử viết đa thức thể hiện sự phức tạp của nó. Nếu bạn thành công thì X có tính phức tạp đa thức, nếu bạn thất bại, bạn có thể muốn điều khiển bản thân với suy nghĩ rằng X không có sự phức tạp đa thức, điều này sẽ an ủi hơn ý nghĩ rằng bạn đã thất bại trong việc tìm ra đa thức (hoặc a). Nhưng, nghiêm túc hơn, hãy thử viết một phương trình cho sự phức tạp của hệ số nguyên integer về số chữ số trong số nguyên và nghiên cứu dạng của nó. –