设计一个函数该函数的功能是将一个大于2的自然数分解素因数,并将这些素因数从小到大排列成一个数组,并返回素因数的个数。

该函数格式如下:
int factor(int n, int fac[]);
其中n为被分解的自然数,fac是存放素因数的数组。比如 n为20,则fac的值为{2,2,5},返回值为3。

以下main函数执行后
void main()
{
int fac[32], i=0, n;

n = factor(3600, fac);
while(i < n)
{
    cout << fac[i++] <<" ";
}
cout << endl;

}
结果为:
2 2 2 2 3 3 5 5

供参考:

#include <stdio.h>
#define N 100
int factor(int n, int fac[]);
int main()
{
    int a[N] = { 0 }, n, i;
    scanf("%d", &n);
    n = factor(n, a);
    for (i = 0; i < n; i++)
        printf(i == 0 ? "%d" : " %d", a[i]);
    return 0;
}
int factor(int n, int fac[])
{
    int i = 2, k = 0;
    if (n == 1) {
        fac[k++] = n;
    }
    else{
        while (n != 1)
        {
            if (n % i == 0) {
                n /= i;
                fac[k++] = i;
            }
            else {
                i++;
            }
        }
    }
    return k;
}

分两种情况:
n等于1的话直接填1
不是1的话for循环2到<n+1或者<=n
里边再嵌一个循环 while (n%i==0) 填i 然后n=n/i
另外你需要额外定义一个自增为1的指针控制填入fac相应的位置