Definisi
Biarkan m
dan n
menjadi bilangan bulat positif. Kami mengatakan bahwa m
adalah twist yang pembagi dari n
jika ada bilangan bulat 1 < a ≤ b
sehingga n = a*b
dan m = (a - 1)*(b + 1) + 1
. Jika m
dapat diperoleh dari n
dengan menerapkan nol atau lebih tikungan pembagi untuk itu, maka m
adalah keturunan dari n
. Perhatikan bahwa setiap angka adalah turunannya sendiri.
Sebagai contoh, pertimbangkan n = 16
. Kita dapat memilih a = 2
dan b = 8
sejak itu 2*8 = 16
. Kemudian
(a - 1)*(b + 1) + 1 = 1*9 + 1 = 10
yang menunjukkan bahwa itu 10
adalah twist pembagi 16
. Dengan a = 2
dan b = 5
, kita kemudian melihat bahwa itu 7
adalah twist pembagi 10
. Jadi itu 7
adalah keturunan 16
.
Tugas
Diberikan bilangan bulat positif n
, hitung keturunan n
, terdaftar dalam urutan yang meningkat, tanpa duplikat.
Aturan
Anda tidak diizinkan untuk menggunakan operasi bawaan yang menghitung pembagi nomor.
Baik program dan fungsi penuh diterima, dan mengembalikan tipe data koleksi (seperti jenis tertentu) diizinkan, asalkan itu diurutkan dan bebas duplikat. Hitungan byte terendah menang, dan celah standar tidak diizinkan.
Uji Kasus
1 -> [1]
2 -> [2] (any prime number returns just itself)
4 -> [4]
16 -> [7, 10, 16]
28 -> [7, 10, 16, 25, 28]
51 -> [37, 51]
60 -> [7, 10, 11, 13, 15, 16, 17, 18, 23, 25, 28, 29, 30, 32, 43, 46, 49, 53, 55, 56, 60]
<
untuk bilangan asli, untuk setiap n Anda mendapatkan setiap angka lebih kecil dari itu tetapi tidak sendiri. Saya pikir ini harus menjadi sesuatu yang serupa. Dengan cara ini saya pikir hanya 4 akan menjadi keturunannya sendiri (meskipun tidak yakin tentang itu).