Definisi
Bilangan bulat positif n
adalah angka praktis (OEIS urutan A005153 ) jika semua bilangan bulat positif yang lebih kecil dapat direpresentasikan sebagai jumlah dari pembagi yang berbeda dari n
.
Sebagai contoh, 18
adalah angka praktis: pembagi nya adalah 1, 2, 3, 6, 9, dan 18, dan bilangan bulat positif lainnya yang lebih kecil dari 18 dapat dibentuk sebagai berikut:
4 = 1 + 3 5 = 2 + 3 7 = 1 + 6
8 = 2 + 6 10 = 1 + 9 11 = 2 + 9
12 = 3 + 9 = 1 + 2 + 9 = 1 + 2 + 3 + 6
13 = 1 + 3 + 9 14 = 2 + 3 + 9 15 = 6 + 9
16 = 1 + 6 + 9 17 = 2 + 6 + 9
Tetapi 14
bukan angka praktis: pembagi-nya adalah 1, 2, 7, dan 14, dan tidak ada himpunan bagian yang menambah 4, 5, 6, 11, 12, atau 13.
Tantangan
Menulis sebuah program, fungsi, atau kata kerja yang mengambil sebagai masukan bilangan bulat positif x
dan baik kembali atau cetakan x th nomor praktis, diindeks dari 1 untuk konsistensi dengan Oei. Kode Anda harus cukup efisien sehingga dapat menangani input hingga 250000 dalam waktu kurang dari dua menit pada komputer desktop yang masuk akal. (NB implementasi referensi saya di Java mengelola 250000 dalam waktu kurang dari 0,5 detik, dan implementasi referensi saya di Python mengelolanya dalam 12 detik).
Uji kasus
Input Expected output
1 1
8 18
1000 6500
250000 2764000
1000000 12214770
3000000 39258256