c语言,求出1000以内的所有完数(一个数恰好等于其因子之和,例,6=1+2+3) 我的程序算不出,求帮忙看看

#include<stdio.h>
void main(void)
{
int i,j;
int sum=0;
for(i=2;i<1000;i++)
{ for(j=1;j<i;j++)
{
if(i%j==0)
sum+=j;
if(j==(i-1)&&sum==i)
printf("%d\n",i);

}

}

}

第1个回答  2016-12-07
#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;
}
第2个回答  2016-12-07
#include<stdio.h>
int main(void)
{
int i,j,sum=0;
    for(i=2;i<1000;i++)
{  
sum=0;
for(j=1;j<i;j++)
      {
                if(i%j==0)
             sum+=j;

              }
if(sum==i)
      printf("%d\n",i);

}
return 0;
}

本回答被提问者采纳

...的所有完数(一个数恰好等于其因子之和,例,6=1+2+3) 我的程序算...
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;}

...为完数,如6=1+2+3.用C语言找出1000以内的所有完数。
可惜楼上用的是JAVA写。现仿照楼上用C语言写了一个。include <stdio.h> include <conio.h> void main(){ int a[1000];int i,j,n,s;for( j=2; j<1000; j++){ n = -1;s = j;for( i=1; i<j; i++){ if( ( j%i) == 0){ n++;s = s - i;a[n] = i;} } if...

C语言题目 编程 找出1000以内的所有”完数“,所谓”完数“是指一个数...
include<stdio.h> int main(){ int i,j,s;for(i=2;i<=1000;i++){ s=1;for(j=2;j<=i\/2;j++)if(i%j==0)s+=j;if(s==i)printf("%d\\n",i);} getch();return 0;}

...完数”。例如6=1+2+3.编程找出1000以内的所有完数
include<stdio.h> int main(){ int i,j,sum=1;int b[100];for(i=3;i<=1000;i++){ sum=1;int k=0;for(j=2;j<i;j++)if( i%j==0) {sum+=j;b[k++]=j;} if(i==sum){ printf("%d its factors are %d",i,b[0]);for(int a=1;a<k; a++)printf(",%d",b[a...

...完数”。例如6=1+2+3.编程找出1000以内的所有完数。
include"stdio.h"main(){ int j,i,k=0;for(j=6;j<1001;j++){ for(i=1;i<=j\/2;i++)if(j%i==0)k+=i;if(j==k){ printf("%4d its factors are ",k);for(i=1;i<=j\/2;i++)if(j%i==0)printf("%d,",i);printf("\\b \\n");} k=0;} getch()();} ...

...完数”。例如6=1+2+3.编程找出1000以内的所有完数
完数:一个数的因子之和等于该数 *\/#include <stdio.h>#include <string.h>void main(){ int i,j,sum=1; for(i=3;i<=1000;i++) { sum=1; for(j=2;j<i;j++) { if( i%j==0) sum+=j; } if(i==sum) { printf("%3d, 因子为:",i); for( j=2; j...

...为“完数”。例如6=1+2+3.编程找出1000以内的所有完
include"stdio.h"main(){ int i,j,k=1,s=1,n,m;printf("1000以内的所有完数:");for(n=3;n<=1000;n++){ m=n;for(j=0;j<k;j++)for(i=2;i<m;i++)if(m%i==0){s=i+s;}\/\/m=m\/i;i=m;k++;if(m==1)j=k;} \/\/将各个因子累加就行。if(s==n)printf(" %d",n...

c语言调用函数求1000以内的完数(完数指一个整数的值等于出它本身的所有...
1、变量i的for循环里,累加部分错了,n++改为i++ 2、逻辑错误,将if(s==n)放在累加的循环里是不正确的,也许存在最终的s>n的情形,这会导致误判 3、逻辑错误,这段程序只能输出最小的一个完数。正确的做法是,把循环内部的return改为输出语句,每次得到解后不是退出函数而是输出结果并继续计算 ...

题目的要求是 求出1000以内的完数,所谓的完数就是说一个数恰好等于他...
h> int main(){ int i,j,m=0;for(i=2;i<=1000;i++) \/\/寻找1000以内的完数 { m=0; \/\/补充 for(j=1;j<=i-1;j++) \/\/从1开始求i的因子 if(i%j==0)m=m+j; \/\/寻找i的因子,并把因子之和加起来 if(m==i)printf("%d是个完数\\n",i);} return 0;} ...

...等于它的因子之和,这个数就成为完数,如6= 1+2+3 帮我看一下哪里错...
include <stdio.h>int main(int argc, char *argv[]) {int number,sum=0,n; for(number=1;number<=1000;number++) {sum=0;\/\/每次初始化sum很重要!for(n=1;n<number;n++) { if(number%n==0) { sum=sum+n;} }if(sum==number) \/\/得到所有的因数和之后再检查!{...

相似回答