c语言如何判断一个数是完数,如题,做了几遍都不行,只好到此请教

/*-------------------------------------------------------【程序设计】----------------------... /*-------------------------------------------------------
【程序设计】
---------------------------------------------------------

题目:一个数如果恰好等于它的因子(不包含自身)之和,这个数就称为"完数"。
例如6=1+2+3,6是一个完数;28=1+2+4+7+14,所以28也是完数。
本程序功能是打印出1000以内的所有完数。

要求:完成函数fun(),其功能是判断某数j是否是完数 。
  
注意:部分源程序给出如下。wwjt()为测试函数。 

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

-------------------------------------------------------*/
#include <stdio.h>
void wwjt();

int fun(int j)
{

/**********Program**********/

/********** End **********/

}
int main()
{
int i;
for (i=1;i<1000;i++)
if ( fun(i) )
printf("%d is a 完数:\n",i);
wwjt();
return 0;
}

void wwjt()
{

int i,j;
int a[10];
FILE *rf, *wf ;
rf = fopen("in.dat", "r") ;
wf = fopen("out1.dat", "w") ;
for(i=0;i<10;i++)
{
fscanf(rf, "%d", &a[i]);
for (j=1;j<a[i];j++)
if (!fun(j) && j>300)
fprintf(wf, "%d", j);
fprintf(wf, "\n");
}

fclose(rf);
fclose(wf);

}
展开
 我来答
匿名用户
2017-05-07
展开全部
int fun(int j){
int sum = 0;
for(int i = 1; i <= j/2; i++){
if( j%i == 0){
sum += i;
}
}
return sum == j;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
XRCPL
2017-05-07 · TA获得超过1647个赞
知道小有建树答主
回答量:804
采纳率:100%
帮助的人:287万
展开全部
int fun(int j)
{

/**********Program**********/
int sum=0;
int i;
for(i=1;i<j;i++)
{
if(j%i==0)
{
sum+=i;
}
}
if(sum == j)
return 1;
else
return 0;
/********** End **********/

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式