Các định nghĩa
Hãy để m
và n
là số nguyên dương. Chúng tôi nói rằng đó m
là một sự chia rẽ của n
nếu có tồn tại các số nguyên 1 < a ≤ b
như vậy n = a*b
và m = (a - 1)*(b + 1) + 1
. Nếu m
có thể thu được từ n
bằng cách áp dụng số 0 hoặc nhiều số chia cho nó, thì đó m
là hậu duệ của n
. Lưu ý rằng mỗi số là con cháu riêng của nó.
Ví dụ, xem xét n = 16
. Chúng ta có thể chọn a = 2
và b = 8
, kể từ đó 2*8 = 16
. Sau đó
(a - 1)*(b + 1) + 1 = 1*9 + 1 = 10
trong đó cho thấy đó 10
là một sự chia rẽ của 16
. Với a = 2
và b = 5
, sau đó chúng ta thấy đó 7
là một sự chia rẽ của 10
. Như vậy 7
là một hậu duệ của 16
.
Nhiệm vụ
Cho một số nguyên dương n
, tính toán con cháu của n
, được liệt kê theo thứ tự tăng dần, không trùng lặp.
Quy tắc
Bạn không được phép sử dụng các thao tác tích hợp để tính các ước của một số.
Cả hai chương trình và hàm đầy đủ đều được chấp nhận và trả về kiểu dữ liệu bộ sưu tập (như một bộ loại nào đó) được cho phép, miễn là nó được sắp xếp và không trùng lặp. Số byte thấp nhất sẽ thắng và các sơ hở tiêu chuẩn không được phép.
Các trường hợp thử nghiệm
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]
<
cho các số tự nhiên, với mọi n, bạn nhận được mọi số nhỏ hơn số đó nhưng không phải là chính nó. Tôi nghĩ rằng đây nên là một cái gì đó tương tự. Bằng cách này, tôi nghĩ rằng chỉ có 4 sẽ là hậu duệ của chính nó (mặc dù không chắc chắn về điều đó).