c语言编程求1000以内的完数!!!!!!

#include <stdio.h>
int wanshu(int);
main()
{int n;
for(n=5;n<=10;n++)
if(wanshu(n))
printf("%d\n",n);

}

int wanshu(int m)
{ int i;
for(i=1;i<=m;i++)
{ int sum=0;
if(m%i==0)
sum=sum+i;
if(sum==m)
return 1;
return 0;}
}
不知道哪里错了!!!! 求大神指教!

用C语言输出1000以内所有的完数步骤如下:

1、首先打开vc6.0,新建一个项目。

2、添加头文件。

3、添加main函数。

4、定义i,j,k,n,sum。

5、定义一个数组。

6、使用第一层for循环。

7、使用第二层for循环,用来求出每位的数字。

8、使用if条件判断语句。

9、运行程序看看结果。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-12
又是你啊...
刚才回答了提问就给关闭了..
你的程序没有问题.
只是条件应该是1000以内.
而不是10;
#include
<stdio.h>
main()
{
int
k,n,sum;
for(n=2;n<=1000;n++)
//10的话输出是6.
而你的题目要求是1000内的.
{
sum=0;
for(k=1;k<n;k++)
if(n%k==0)
sum=sum+k;
if(sum==n)
printf("%d
is
wan
shu\n",n);
}
}
第2个回答  2014-03-08

/*

6

28

496

Press any key to continue

*/

#include <stdio.h>

int wanshu(int);

int main() {
int n;
for(n = 5;n <= 1000;n++)
if(wanshu(n))
printf("%d\n",n);
return 0;
}

int wanshu(int m) {
int i,sum = 0;
for(i = 1;i < m;i++)
if(m % i == 0)
sum += i;
if(sum == m) return 1;
    return 0;
}

第3个回答  2014-03-08
#include <stdio.h>
int wanshu(int);
main()
{int n;
  for(n=5;n<=10;n++)
  if(wanshu(n))
   printf("%d\n",n);
  
}

int wanshu(int m)
{  int i;
int sum=0; //
for(i=1;i<=m;i++)
   { 
 if(m%i==0)
 sum=sum+i;
if(sum==m)
return 1;
    return 0;}
}

追问

怎么该

追答#include <stdio.h>
int wanshu(int);
main()
{
int n;
  for(n=5;n<=10;n++)
  if(wanshu(n))
   printf("%d\n",n);
  
}

int wanshu(int m)
{  int i;
int sum=0; //
for(i=1;i<m;i++) //没有等于
   { 
 if(m%i==0)
 sum=sum+i;
} //
if(sum==m)
return 1;
else //
    return 0;

}

本回答被提问者采纳
第4个回答  2021-04-11

相似回答