P066 求n的所有因子之和 ★★

03-程序设计题 软件121, 唐鼎威 1506浏览

所属年份:2011.3
请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。
例如,若主函数从键盘给n输入的值为856,则输出为sum=763。

#include  <stdio.h>
int fun(int n)
{

}

int main()
{
    int  n,sum;
    FILE *out;
    printf("Input  n:");
    scanf("%d", &n);
    sum=fun(n);
    printf("sum=%d\n", sum);
    /******************************/
    out=fopen("out.dat","w");
    fprintf(out,"%d\n",fun(123));
    fprintf(out,"%d\n",fun(456));
    fprintf(out,"%d\n",fun(789));
    fprintf(out,"%d\n",fun(147));
    fprintf(out,"%d",fun(258));
    fclose(out);
    /******************************/
    return 0;
}

【考点分析】
本题考查:变量数据类型及初始化,循环判断语句,函数返回值。
【解题思路】
本程序的实现步骤为:首先遍历从2~n-1的所有整数;然后用条件语句找出能被n整除的所有整数,并累加求和;最后返回值。

【参考答案】

int fun(int n)
{
    int s = 0, i;
    for(i=2; i<n; i++)
        if (n%i==0) s = s + i;
    return s;
}