Bản tường trình vụ việc
Đưa ra một tập hợp các số nguyên tố liên tiếp duy nhất (không nhất thiết phải bao gồm 2), tạo ra các sản phẩm của tất cả các kết hợp sức mạnh đầu tiên của các số nguyên tố này - ví dụ: không lặp lại - và cả 1. Ví dụ, được đưa ra bộ {2, 3, 5, 7}, bạn sản xuất {1, 2, 3, 5, 6, 7, 10, 14, 15, 21, 30, 35, 42, 70, 105, 210} vì:
1 = 1
2 = 2
3 = 3
5 = 5
6 = 2 x 3
7 = 7
10 = 2 x 5
14 = 2 x 7
15 = 3 x 5
21 = 3 x 7
30 = 2 x 3 x 5
35 = 5 x 7
42 = 2 x 3 x 7
70 = 2 x 5 x 7
105 = 3 x 5 x 7
210 = 2 x 3 x 5 x 7
Lưu ý rằng nếu số lượng thẻ của bộ đầu vào của bạn là k, thì số này sẽ cung cấp cho bạn 2 ^ k thành viên trong bộ đầu ra của bạn.
Quy tắc / điều kiện
- Bạn có thể sử dụng bất kỳ ngôn ngữ. Nhằm mục đích cho số lượng ký tự nhỏ nhất của mã nguồn.
- Giải pháp của bạn phải là một chương trình hoàn chỉnh hoặc một chức năng hoàn chỉnh. Chức năng có thể ẩn danh (nếu ngôn ngữ của bạn hỗ trợ các chức năng ẩn danh).
- Giải pháp của bạn sẽ có thể hỗ trợ các sản phẩm tối thiểu 2 ^ 31. Đừng lo lắng về việc phát hiện hoặc xử lý tràn số nguyên nếu bạn được thông qua các số có sản phẩm quá tuyệt vời để thể hiện. Tuy nhiên, xin vui lòng nêu giới hạn tính toán của bạn.
- Bạn có thể chấp nhận một danh sách hoặc một bộ và tạo ra một danh sách hoặc một bộ. Bạn có thể giả sử đầu vào được sắp xếp nhưng bạn không bắt buộc phải tạo đầu ra được sắp xếp.
Lý lịch
Khi nào hoặc tại sao điều này hữu ích? Một nơi rất hữu ích là trong việc tạo một bảng số nhân để chạy song song trong một thuật toán bao thanh toán số nguyên được gọi là Hệ số hình dạng vuông. Ở đó, mỗi số nhân lẻ bạn thử làm giảm xác suất của thuật toán thất bại (để tìm một yếu tố) khoảng 50% cho các bán kết cứng. Vì vậy, với tập hợp các số nguyên tố tạo {3, 5, 7, 11}, tạo ra một bộ gồm 16 số nhân dùng thử để chạy song song, thuật toán thất bại khoảng 2 ^ thời gian trên các bán kết cứng. Việc thêm 13 vào danh sách số nguyên tố sẽ tạo ra một bộ gồm 32 số nhân thử nghiệm, giảm khả năng thất bại xuống còn khoảng 2 ^, 32, mang lại sự cải thiện mạnh mẽ về kết quả mà không phải trả thêm chi phí tính toán (bởi vì thậm chí có gấp đôi số nhân tăng gấp đôi trung bình nó vẫn tìm thấy câu trả lời trong cùng tổng số bước).