Có bất kỳ thuật toán hiệu quả nào để kiểm tra xem danh sách các số nguyên có phải là cặp song song hay không, hoặc thuật toán tổng quát hơn có phải là lựa chọn tốt nhất không?
Có bất kỳ thuật toán hiệu quả nào để kiểm tra xem danh sách các số nguyên có phải là cặp song song hay không, hoặc thuật toán tổng quát hơn có phải là lựa chọn tốt nhất không?
Câu trả lời:
Đầu tiên, hai sự thật về số nguyên coprime:
Nó sau từ này là một tập hợp các số nguyên phân biệt là nguyên tố cùng nhau từng đôi nếu sản phẩm của mình bằng bội số chung nhỏ nhất của nó.
Bạn có thể tính bội số chung nhỏ nhất bằng cách sử dụng danh tính sau:
Giả sử bạn có số có k chữ số, và nhân / chia / sửa hai số là O ( 1 ) (có thể là một giả định tốt tùy thuộc vào mô hình của bạn), sau đó:
Do đó, độ phức tạp thời gian của toàn bộ thuật toán là .
Đúng. Cách tiếp cận ngây thơ của việc kiểm tra từng cặp số cần thời gian bậc hai, nhưng có các thuật toán hiệu quả hơn. Có một thuật toán thời gian gần như tuyến tính, được mô tả trong bài báo sau:
Daniel J. Bernstein. Bao thanh toán vào các phần tử trong thời gian tuyến tính . Tạp chí thuật toán 54 (2005), 1--30.
Xem thêm https://cstheory.stackexchange.com/q/3393/5038 . Điều đó gần như hiệu quả như bạn có thể hy vọng.
Để làm rõ điều này giúp ích như thế nào với tình huống của bạn, một khi bạn đã tìm thấy một cơ sở đồng thời và xác định từng yếu tố trên cơ sở, việc kiểm tra xem chúng có phải là cặp song song hay không: nếu chúng không phải là cặp đôi, thì một số cặp sẽ có điểm chung yếu tố, và đó sẽ là một yếu tố nằm trong cơ sở đồng thời và có mặt trong yếu tố của cả hai. Nếu không có yếu tố nào phổ biến để trình bày trong hệ số của hai hoặc nhiều số, thì bạn biết các số đó là cặp số nguyên. Một khi bạn có các yếu tố, bạn có thể dễ dàng kiểm tra thời gian tuyến tính xem có bất kỳ số nào trong nhiều hơn một hệ số không.
Factoring over a coprime base
liên quan đến checking if a list of integers is pairwise coprime
(chưa).
Tìm các thừa số nguyên tố của mỗi số. Các số này đều là cặp số cộng nhau khi và chỉ khi mỗi số nguyên tố trong toàn bộ bộ sưu tập là khác biệt. Kiểm tra này có thể được thực hiện trong thời gian O (n) bằng cách sử dụng bảng băm.
Chỉnh sửa: Câu trả lời của Draconis là tốt hơn, bởi vì nó không yêu cầu bất kỳ yếu tố nào. Tính toán GCD nhanh hơn nếu số của bạn lớn và / hoặc số nguyên tố.