8-2-12.c

来自「2005软件工程师考试下午编程题源代码」· C语言 代码 · 共 42 行

C
42
字号
/*中国系统分析员顾问团,http://www.csai.cn*/
/*程序员下午考试指南书籍源码*/

#include <stdio.h>
#include <malloc.h>
#define N 100

long factor (int m,int fac[],int *cp){
int c1, c2 , i, k;
long s;
fac[0] = 1;
for(c1 = s = 1,c2 = N-1,i = 2;;) {
k = m/i;
if (m%i == 0)
if (i != k){
fac[c1++] = i;
fac[c2--] = k;
s += i+k;
}
else {
fac[c1++] = i;  
s += i;
}
i++;
if(i>=k) break;
}
for (c2++; c2<=N-1; c2++)
fac[c1++] = fac[c2];
*cp=c1;
return s;
} 
//main()函数原题没有,为了便于测试补充进来了.
main()
{
int m=16,fac[N],*cp,i;
cp=(int *)malloc(sizeof(int));
factor(m,fac,cp);
printf("factor:");
for(i=0;i<*cp;i++)
	printf(" %d",fac[i]);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?