Pernyataan masalah
Diberikan satu set bilangan prima unik dan berurutan (tidak harus termasuk 2), hasilkan semua kombinasi kekuatan pertama bilangan prima ini - mis., Tidak ada pengulangan - dan juga 1. Sebagai contoh, diberikan himpunan {2, 3, 5, 7}, Anda menghasilkan {1, 2, 3, 5, 6, 7, 10, 14, 15, 21, 30, 35, 42, 70, 105, 210} karena:
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
Perhatikan bahwa jika kardinalitas set input Anda adalah k, ini akan memberi Anda 2 ^ k anggota dalam set output Anda.
Aturan / Ketentuan
- Anda dapat menggunakan bahasa apa pun. Bertujuan untuk penghitungan karakter terkecil dari kode sumber.
- Solusi Anda harus berupa program lengkap atau fungsi lengkap. Fungsi ini bisa anonim (jika bahasa Anda mendukung fungsi anonim).
- Solusi Anda harus dapat mendukung produk hingga setidaknya 2 ^ 31. Jangan khawatir tentang mendeteksi atau menangani bilangan bulat bilangan bulat jika Anda melewati angka yang produknya terlalu bagus untuk diwakili. Namun, sebutkan batas perhitungan Anda.
- Anda dapat menerima daftar atau set dan menghasilkan daftar atau set. Anda dapat mengasumsikan input diurutkan tetapi Anda tidak diharuskan untuk menghasilkan output yang diurutkan.
Latar Belakang
Kapan atau mengapa ini bermanfaat? Satu tempat yang sangat berguna adalah membuat tabel pengali untuk berpacu secara paralel dalam algoritma bilangan bulat yang dikenal sebagai Faktor Bentuk Square.. Di sana, setiap pengganda ganjil yang Anda coba mengurangi kemungkinan gagal algoritma (untuk menemukan faktor) sekitar 50% pada semiprimes keras. Jadi dengan himpunan bilangan prima {3, 5, 7, 11}, yang menghasilkan satu set pengganda uji coba 16 untuk berpacu secara paralel, algoritma gagal sekitar 2 ^ –16 waktu pada hard semiprimes. Menambahkan 13 ke daftar bilangan prima menghasilkan satu set 32 pengganda percobaan, mengurangi kemungkinan kegagalan menjadi sekitar 2 ^ –32, memberikan peningkatan hasil yang drastis tanpa biaya komputasi tambahan (karena bahkan dengan pengganda dua kali lebih banyak yang berpacu secara paralel, di rata-rata masih menemukan jawaban dalam jumlah langkah yang sama).