该函数格式如下:
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相应的位置