足して変数aに等しくなる、以下のような数字の組み合わせを取得したいのですが、よい方法はありませんか
約数を使えば行けそうな気がするんですが、処理の流れが思いつきません
使っているのはC#ですが、やり方が分かれば他の言語でも大丈夫です

変数aは1以上1000以下であることが分かっています。
a=3の時->[3],[2, 1],[1, 1, 1]
a=4の時->[4],[2, 2],[3, 1],[2, 1, 1],[1, 1, 1, 1]