C语言 帮 输入N笔资料 N数字 求每个数字的因数,并依照出现频率由小到大排列

输入N个资料,N为接下来输入的资料,可以不断地要求使用者输入一组资料,直到此组资料符合离开条件时则程式结束。每次输入一组资料内容如下所示:
N d1 d2 … dN
N代表接下来输入数字的数量
d1 d2 … dN 则表示N个数字
在此注意的是当N<=0时,则代表此资料符合离开程式条件

当一组资料被输入且不符合离开条件时,请计算每个数字的因数,并根据因数所出现的频率次数由大到小排序之,当频率次数一样时,则数字越小越先输出。

输入资料:
5 1 2 3 4 5
3 2 4 6
2 6 8
-1

輸出結果:
1 2 3 4 5
1 2 3 4 6
1 2 3 4 6 8

中间运算过程:
1: 5次, 2: 2次, 3, 4, 5: 各1次
1: 3次, 2: 3次, 3, 4, 6: 各1次
1: 2次, 2: 2次, 3, 4, 6, 8: 各1次

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^