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);
} 展开
【程序设计】
---------------------------------------------------------
题目:一个数如果恰好等于它的因子(不包含自身)之和,这个数就称为"完数"。
例如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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询