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

 我来答
莫道無情
2019-07-08 · TA获得超过1.5万个赞
知道答主
回答量:317
采纳率:100%
帮助的人:8万
展开全部

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等等。

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

做而论道
高能答主

2012-03-13 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
仅供参考,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
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hw19960812
推荐于2018-05-10 · TA获得超过215个赞
知道答主
回答量:46
采纳率:50%
帮助的人:22万
展开全部
#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);
     }
     }
    }
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ILIKECUI
2012-03-12
知道答主
回答量:54
采纳率:0%
帮助的人:49.3万
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式