用C语言编程:输出2~100之间所有完数,完数是指该数各因子之和等于该数本身

如题所述

C语言程序如下:

#include <stdio.h>

int main()

long int i,j,sum;   

for(i=2;i<100;i++)

{   sum=0;

for(j=2;j<=i/2;j++)

{

if(i%j==0)

{

sum=sum+j;

}  

}

if(i==sum+1)

printf("%d\n",i);

}

}

扩展资料:

如果一个数恰好等于它的因子之和,则称该数为“完全数”。

第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。

第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。

第三个完全数是496,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。后面的完全数还有8128、33550336等等。

参考资料:百度百科-完全数

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-13
仅供参考,1000以内的:

//一个数如果恰好等于它的因子之和,这个数就称为“完数”。
//例如6的因子为1、2、3,而6=1+2+3,因此6是“完数”,
//编程找出1000以内的所有完数:

#include <stdio.h>

void main()
{

int x, i, sum;
x = 1;
while(x <= 1000) { //x要从1到1000循环。
sum = 0; //每算一个新的x时,sum要清0
for(i = 1; i < x; i++) if(x % i == 0) sum += i; //如果i是x的因子,sum加上i
if(x == sum) printf("%d\n", x); //如果因子和等于本身
x++;
}
}

程序运行结果:
6
28
496本回答被网友采纳
第2个回答  推荐于2018-05-10
#include <stdio.h>
void main()
{
    int i,j,x,y;
    for(i=2;i<=2000;i++)
    {
     x=i;
     y=0;//将y的数值清零
     for(j=1;j<i;j++)
     { 
     if(x%j == 0)
     {
     y=y+j;
     }
     if(x==y)
     {
     if(j==(x-1))//确保除到x的上一位,避免出现还没有除到x的上一位就出现x==y的情况,如24数值。
     printf("%d\n",x);
     }
     }
    }
}

本回答被网友采纳
第3个回答  2012-03-12
#include<stdio.h>
int iswanshu(int);
int main(void){
int i;
for(i = 2; i<=100;i++){
if(iswanshu(i)){
printf("%d\n",i);
}
}
}

int iswanshu(int n){
int sum = 0;
int i;
for(i = 1;i<n;i++){
if(n % i == 0){
sum = sum +i;
}
}
if(sum == n){
return 1;
}
else
return 0;
}
相似回答