用C语言输出1000以内所有的完数

我的做法:

#include<stdio.h>
int main()
{
inti,n,sum;
for(n=1;n<=1000;n++)
{
sum=0;
for(i=1;i<n;i++)
{
if(n%i==0)
{sum=sum+i;}
if(sum==n)
{printf("%4d",n);}
}
}
return0;
}
输出结果却是:
6 6 6 24 24 24 24 28 28 28 28 28 28 28 28 28 28 28 28 28
28 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496Press any key to continue
可以帮忙看一下吗,谢谢!

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

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

2、添加头文件。

3、添加main函数

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

5、定义一个数组。

6、使用第一层for循环

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

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

9、运行程序看看结果。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-01-02

#include<stdio.h>
int main()
{ int i,n,sum;
  for(n=1; n<=1000; n++)
  { sum=0;
    for(i=1; i<n; i++)
    { if(n%i==0)
      { sum=sum+i;
      }
    } //括号的位置作了更改,要循环结束后再判断是否相等 
    if(sum==n)
    { printf("%4d",n);
    }
  }
  return 0;
}

第2个回答  推荐于2017-12-26
#include<stdio.h>
int main()
{
       int i,n,sum;//
       for(n=1;n<=1000;n++)
       {
              sum=0;
              for(i=1;i<n;i++)
              {
                     if(n%i==0)
                     {sum=sum+i;}
                     //if(sum==n)
                     //{printf("%4d",n);}
              }
              if(sum==n)
                     {printf("%4d",n);}
       }
       return 0;
}

本回答被提问者和网友采纳
第3个回答  2017-12-26
#include <stdio.h>
//构造一个方法用来自动向数组中添加新元素;
void add(int a[],int j){
int i;
for(i=0;i<100;i++){
if(a[i]=='\0'){
a[i]=j;
break;
}
}
}
void main(){
int n=0,i=0,sum;
//静态变量;
static int m[10];
for(n = 2;n<=1000;n++){
sum=0;
for(i=1;i<n;i++){
if(n%i==0){
sum = sum+i;
add(m,i);
}
}
if(sum==n){
printf("%d是合数\n",n);
printf("包含的因子有:\n");
for(i=0;i<10;i++){
if(m[i]=='\0'){
break;
}
printf("%d\n",m[i]);
}

}else{
//初始化数组元素;
for(i=0;i<10;i++){
m[i]='\0';
}
}
}
}
第4个回答  2017-11-04
你的if函数一直在循环
相似回答